其他分享
首页 > 其他分享> > 航空公司客户价值分析---机器学习

航空公司客户价值分析---机器学习

作者:互联网

航空公司客户价值分析

1、了解航空公司现状与客户价值分析

1.1、根据航空公司的数据特征进行下列说明:

1.2、结合目前航空公司的数据情况,可以实现以下目标:
1.3、认识客户价值分析

​ 全球经济环境和市场环境已经悄然改变,企业的业务逐步从以产品为主导转向以客户需 求为主导。一种全新的“以客户为中心”的业务模式正在形成并被提升到前所未有的高度。 然而与客户保持关系需要花费成本,企业所拥有的客户中只有一部分能为企业带来利润。企 业的资源也是有限的,忽视高潜力的客户而对所有客户都提供同样的服务,将使企业的资源 无法发挥其最大效用去创造最大化的利润。任何企业要想生存和发展,都必须获得利润,追 求利润最大化是企业生存和发展的宗旨之一。所以企业不可能也不应该和所有的客户都保持 同样的关系。客户营销战略的倡导者 Jay& Adam Curry 从对国外数百家公司进行的客户营销 实施的经验中提炼了如下经验:

众多的企业管理者虽然知道客户价值分析的重要性,但对如何进行客户价值分析却知之 甚少。如何全方位、多角度地考虑客户价值因素,进行有效的客户价值分析,这是摆在所有 企业面前需要认真思索的一个问题。

只有甄选出有价值的客户并将精力集中在这些客户身上, 才能有效地提升企业的竞争力,使企业获得更大的发展。 在客户价值分析领域,最具影响力并得到实证检验的理论与模型有客户终生价值理论客 户价值金字塔模型、策略评估矩阵分析法和 RFM 客户价值分析模型等。本章将运用改进的客 户价值 RFM 模型进行分析。

1.4、了解航空公司的客户价值分析的步骤流程

1.5、客户价值分析大概流程

2、航空公司客户数据处理

2.1、观察数据

航空公司客户原始数据存在少量的缺失值和异常值,需要清洗后才能用于分析。同时由 于原始数据的特征过多,不便直接用于客户价值分析,因此需要对特征进行筛选,挑选出衡量客户价值的关键特征。

2.2、数据如何处理?

​ 通过对 数据观察 发现原始数据中存在票价为空值、票价最小值为 0、折扣率最小值为 0 总飞行千米数大于 0 的记录。票价为空值的数据可能是由于不存在乘机记录造成的。其他的 数据可能是由于客户乘坐 0 折机票或者积分兑换造成的。由于原始数据量大,这类数所占比 例较小,对问题影响不大,因此对其进行丢弃处理。具体处理方法如下:

# 导入工具包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

# 加载数据
def load_data():
    air_data = pd.read_csv('../datas/air_data.csv',encoding = 'ansi')

    return air_data

# 数据处理
def deal_data(air_data):
    airline_data = pd.read_csv("../datas/air_data.csv",
                               encoding="gb18030")  # 导入航空数据
    print('原始数据的形状为:', airline_data.shape)
    ## 去除票价为空的记录
    # exp1与exp2都为True的数据项,exp置为True
    # 信号值 :exp1、exp2、exp
    exp1 = airline_data["SUM_YR_1"].notnull()
    exp2 = airline_data["SUM_YR_2"].notnull()
    exp = exp1 & exp2
    airline_notnull = airline_data.loc[exp, :]
    print('删除缺失记录后数据的形状为:', airline_notnull.shape)

    # 只保留票价非零的,或者平均折扣率不为0且总飞行公里数大于0的记录。
    
    index1 = airline_notnull['SUM_YR_1'] != 0
    index2 = airline_notnull['SUM_YR_2'] != 0
    index3 = (airline_notnull['SEG_KM_SUM'] > 0) & (airline_notnull['avg_discount'] != 0)
    airline = airline_notnull[(index1 | index2) & index3]
    print('删除异常记录后数据的形状为:', airline.shape)
    #
    # 选取需求特征
    airline_selection = airline[["FFP_DATE", "LOAD_TIME",
                                 "FLIGHT_COUNT", "LAST_TO_END",
                                 "avg_discount", "SEG_KM_SUM"]]
    # 构建L特征
    L = pd.to_datetime(airline_selection["LOAD_TIME"]) - pd.to_datetime(airline_selection["FFP_DATE"])
    L = L.astype("str").str.split().str[0] # 去除数据中的days字符,只输出数字,再转化为数值型数据
    L = L.astype("int") / 30
    
    ## 合并特征
    airline_features = pd.concat([L,
                                  airline_selection.iloc[:, 2:]], axis=1)
    print('构建的LRFMC特征前5行为:\n', airline_features.head())
    # .preprocessing 预处理与归一化 数据
    from sklearn.preprocessing import StandardScaler
    data = StandardScaler().fit_transform(airline_features)
    np.savez('../datas/airline_scale_test1.npz', data)
    print('标准化后LRFMC五个特征为:\n', data[:5, :])
    return data

(2)、航空客户价值分析的 LRFMC 模型--构建LRFMC特征

提取特征值是有一列:L --->会员入会时间和窗口结束之间的月数

# 选取需求特征
    airline_selection = airline[["FFP_DATE", "LOAD_TIME",
                                 "FLIGHT_COUNT", "LAST_TO_END",
                                 "avg_discount", "SEG_KM_SUM"]]
    # 构建L特征
    L = pd.to_datetime(airline_selection["LOAD_TIME"]) - pd.to_datetime(airline_selection["FFP_DATE"])
    L = L.astype("str").str.split().str[0] # 去除数据中的days字符,只输出数字,再转化为数值型数据
    L = L.astype("int") / 30
    
    ## 合并特征
    airline_features = pd.concat([L,
                                  airline_selection.iloc[:, 2:]], axis=1)
    print('构建的LRFMC特征前5行为:\n', airline_features.head())
(3)、标准化数据----->标准差标准化数据
# .preprocessing 预处理与归一化 数据
    from sklearn.preprocessing import StandardScaler
    data = StandardScaler().fit_transform(airline_features)
    np.savez('../datas/airline_scale_test1.npz', data)
    print('标准化后LRFMC五个特征为:\n', data[:5, :])
    return data# 返回处理好的特征值数据框

3、K-Means————算法预测

# 5、算法预测K-Means
    # 1、实例化对象
    #n_clusters = 5指的是分为五个簇
    km = KMeans(n_clusters = 5,init = 'k-means++')

    # 2、训练数据
    km.fit(air_data)

    # 3、预测
    y_pre = km.predict(air_data)

    # 4、获取最终的聚类中心
    centers = km.cluster_centers_

    print('y_pre:\n', y_pre) # 输出预测值
    print('centers:\n', centers)

4、绘制雷达图

def show_plt(data):
    """
            绘制雷达图,来展示结果
            :param centers: 各个类别的聚类中心
            :return: None
            """
    # 1、创建画布
    plt.figure()

    # 支持中文,支持负号:
    plt.rcParams['font.sans-serif'] = 'SimHei'
    plt.rcParams['axes.unicode_minus'] = False

    #绘制雷达图
    datalength = data.shape[1]
    # 构建角度
    # 从0~2π生成五个代表 特征值 的角度
    angle = np.linspace(0,2 * np.pi , datalength,endpoint = False)

    # 闭合角度
    angle = np.concatenate((angle,[angle[0]]),axis = 0)
    print('五个特征值之间的角度为:\n')
    print('angle:\n',angle)

    # 将绘的图中的 尾部闭合 构成 回路图
    centers = np.concatenate((data,data[:,0:1]),axis=1)

    for i in range(centers.shape[0]):
        data1 = centers[i, :]
        print('data1:\n',data1)
        plt.polar(angle,data1)



    # 添加标题
    plt.title('航空公司客户聚类结果')

    # 修改刻度
    plt.xticks(angle[:-1], ['L', 'R', 'F', 'M', 'C'])

    # 添加图例
    plt.legend(['第一类客户', '第二类客户', '第三类客户', '第四类客户', '第五类客户'], loc=0)

    # 保存
    plt.savefig('../datas/航空公司客户聚类结果test1.png')
    # 3、保存及展示
    plt.show()


雷达图展示:

5、主函数

def main():
    """
    主函数:程序的入口
    :return:
    """
    # 1、加载数据
    air_data = load_data()
    print("原始的数据形状是:\n", air_data)
    # 处理数据
    air_data = deal_data(air_data)
    print("处理好的数据是:\n", air_data)
    print("处理好的数据形状是:\n", air_data.shape)

    # 5、算法预测K-Means
    # (1)实例化对象
    # n_clusters = 5指的是分为五个簇
    km = KMeans(n_clusters=5, init='k-means++')

    # 2、训练数据
    km.fit(air_data)

    # 3、预测
    y_pre = km.predict(air_data)

    # # 获取最终的聚类中心
    centers = km.cluster_centers_

    print('y_pre:\n', y_pre) # 输出聚类中簇的分类以及个数
    print('centers:\n', centers)
    # 4、绘制雷达图及修饰
    show_plt(centers)

if __name__ == '__main__':
    main()   # 启动

聚类结果分析:

6、模型应用

根据对各个客户群进行特征分析,采取下面的一些营销手段和策略,为航空公司的价值 客户群管理提供参考:

标签:机器,data,air,---,客户,airline,print,航空公司
来源: https://www.cnblogs.com/yufei12/p/15008487.html