精华内容
下载资源
问答
  • ⑴借助航空公司的客户数据,对客户进行分类;⑵对不同类的客户类别进行特征分析,比较不同类客户客户价值;⑶从营销角度讲,客户价值分析实际上是一个市场细分问题,解决市场细分问题比较常用的方法是聚类分析;⑷...
  • python航空公司客户价值分析(一)

    千次阅读 2019-01-27 23:43:42
    python航空公司客户价值分析 (一) 背景与挖掘目标分析方法与过程 背景与挖掘目标 企业营销的焦点从产品中心转变为客户中心,客户关系管理成为企业的核心问题。客户管理关键是客户分类,通过客户分类,区分一般...

    python之航空公司客户价值分析 (一)

    背景与挖掘目标

    企业营销的焦点从产品中心转变为客户中心客户关系管理成为企业的核心问题。客户管理关键是客户分类,通过客户分类,区分一般价值客户以及高价值客户,企业针对不同价值客户制定个性化服务方案,采取不同的营销策略,将有限营销资源集中于高价值客户,实现企业利润最大化。
    针对航空公司数据:

    1. 根据航空公司客户数据,对客户进行分类
    2. 对不同的客户类别进行特征分析,比较不同客户的客户价值
    3. 对不同价值的客户类别提供个性化服务,制定相应的营销策略
    表1 航空信息属性表

    分析方法与过程

    识别客户价值应用最广泛的模型是通过3个指标(最近消费时间间隔(Recency),消费频率(Frequency)和消费金额(Monetary))来进行客户分析,识别出高价值客户,简称RFM模型。
    在RFM模型中,由于航空票价受距离、舱位等级诸多元素影响,同样消费金额的不同旅客对航空公司的价值是不同的。例如,一位购买长航线、低等级舱位票的旅客与一位购买短航线、高等级舱位的旅客相比,后者价值更大一些。所以,这个指标不适合航空公司的客户价值分析。
    本案例将客户关系长度L、消费时间间隔R、消费频率F、飞行里程M和折扣系数的平均值C五个指标作为航空公司识别客户价值指标,记为LRFMC模型。

    模型 L R F M C
    航空公司LRFMC模型 会员入会时间距观测窗口结束的月数 客户最近一次乘坐公司飞机距观测窗口结束的月数 客户在观测窗口内乘坐公司飞机的次数 客户在观测窗口内累计的飞行里程 客户在观测窗口内乘坐舱位所对应的折扣系数的平均值

    本案例采用聚类的方法识别客户价值。通过对航空公司客户价值的LRFMC模型的五个指标进行K-Means聚类,识别出有价值客户。

    展开全文
  • 1、借助航空公司的数据进行客户分类 2、比较不同类客户的价值并制定销策略识别客户价值的最广泛的模型是通过RFM模型来识别出高价值的客户: Recency: 最近消费时间间隔 Frequency: 消费频率 Monetary: ...

    航空公司客户价值分析
    目标:企业针对不同价值的客户制定个性化的服务,将有限的资源集中于高价值客户。
    1、借助航空公司的数据进行客户分类
    2、比较不同类客户的价值并制定销策略

    识别客户价值的最广泛的模型是通过RFM模型来识别出高价值的客户:
    Recency: 最近消费时间间隔
    Frequency: 消费频率
    Monetary: 消费金额
    问题:同样的消费金额的不同旅客对航空公司的价值不同,例如买长航线、低等仓的旅客和买短航线、高等仓的旅客消费金额相同
    但是价值确实不同的。显然后者更有价值。因此这个指标可能不合适,故选择客户在一定时间内的飞行里程M和乘坐舱位所对应的折扣洗漱C。

    航空公司客户价值分析模型:
    L:会员入会时间距观测窗口结束的时间
    R:客户最近一次乘坐公司分级距观测窗口结束的时间(月数)
    F:客户在观测窗口内乘坐公司飞机的次数
    M:客户在观测窗口内累计的飞行里程
    C:客户在观测窗口内乘坐舱位所对应的折扣系数的平均值
    模型概述:
    通过使用k-means聚类算法没使用LRFMC模型进行测试
    对模型进行分析,分析客户的价值

    import pandas as pd
    datafile = 'data/air_data.csv'
    resultfile = 'data/tmp.xls' 
    data = pd.read_csv(datafile, encoding='utf-8')
    
    explore = data.describe().T 
    explore['null'] = len(data) - explore['count'] #计算空值
    
    
    explore = explore[['null', 'max', 'min']]  #得到每一列的空值,最大值,最小值
    
    
    explore.to_excel(resultfile) # 是结果写入文件
    

    根据上面的数据统计,丢弃所有不符合的数据,
    1、票价为空的
    2、票价为0,但是折扣不是0,而且飞行里程大于0,
    这样的数据是错误数据,直接删除。

    data = pd.read_csv(datafile, encoding='utf-8')
    
    cleanedfile = 'data/cleanfile.csv' #存清理后的数据
    
    # 去掉票价是空的元素
    data = data[data['SUM_YR_1'].notnull()]
    data = data[data['SUM_YR_2'].notnull()]
    
    
    # 去掉票价为0,但是折扣不是0,而且飞行里程大于0
    data = data.drop(data['SUM_YR_1'] ==0 & (data['SEG_KM_SUM'] != 0) | (data['avg_discount'] > 0))
    
    print(len(data))
    
    # print(data.columns)
    
    # 属性规约:去掉不相管的属性,只留下与LRFMC模型相关的属性
    # FFP_DATE 入会时间
    # LOAD_TIME 观测窗口结束时间
    # FLIGHT_COUNT 飞行频率
    # avg_discount 平均折扣
    # SEG_KM_SUM 观测窗口总飞行公里数
    # LAST_TO_END 最后一次乘机时间至观察窗口末端时长
    
    data = data[['FFP_DATE','LOAD_TIME', 'FLIGHT_COUNT', 'avg_discount', 'SEG_KM_SUM','LAST_TO_END']]
    
    
    data.to_csv(cleanedfile) #写入文件

    数据变化的LRFMC数据:
    L = LOAD_TIME - FFP_DATE (观测窗口时间 - 入会时间)
    R = LOAD_TIME - LAST_TO_END (观测窗口时间 - 最后一次乘机时间)
    F = FLIGHT_COUNT
    M = SEG_KM_SUM
    C = avg_discount

    from datetime import datetime
    import time
    
    def normal_time(date):
        '''
        格式化数据
        '''
        return datetime.strptime(date,"%Y/%m/%d")
    
    def interval_time(dd):
        '''
        计算时间间隔,以月为单位
        '''
        return dd.days / 30
    # data_LRFMC数据
    data_LRFMC = pd.DataFrame()
    # data_LRFMC.columns = ['L', 'R', 'F','M', 'C']
    data_LRFMC['L'] = (data['LOAD_TIME'].apply(normal_time) - data['FFP_DATE'].apply(normal_time)).apply(interval_time)
    data_LRFMC['R'] = data['LAST_TO_END']
    data_LRFMC['F'] = data['FLIGHT_COUNT']
    data_LRFMC['M'] = data['SEG_KM_SUM']
    data_LRFMC['C'] = data['avg_discount']
    
    # 显示数据的描述,最大值和最小值
    data_LRFMC_describe = data_LRFMC.describe().T
    data_LRFMC_describe = data_LRFMC_describe[['max','min']].T
    
    data_LRFMC.to_csv('data/LRFMC.csv') #数据写入文件

    注意到所有的数据值,最大值和最小值间隔较大,需要对数据进行标准化
    这里使用标注差标准化,可以使用认识方法进行处理

    # 标准化、重命名、写入文件
    data_normal = (data_LRFMC - data_LRFMC.mean()) / (data_LRFMC.std())
    data_normal.columns = ['Z'+i for i in data_normal.columns]
    data_normal.to_csv('data/data_normal')
    

    数据处理完毕,下面进行模型的构建,
    1、使用聚类算法,将数据生成5类用户
    2、针对聚类结果进行特征分析

    from sklearn.cluster import KMeans
    k = 5
    kmodel = KMeans(k) #得到模型
    kmodel.fit(data_normal) #训练模型
    
    # 查看聚类中心和对应的类别
    print(kmodel.cluster_centers_)
    print(kmodel.labels_)
    
    [[ 1.16443082 -0.3775831  -0.08518766 -0.09323092 -0.15906231]
     [-0.70014625 -0.41584827 -0.15935193 -0.15955595 -0.26734394]
     [ 0.01594116  0.00784598 -0.24843215 -0.25750534  2.08918975]
     [ 0.48503896 -0.80134848  2.48281809  2.43536635  0.31393202]
     [-0.31252471  1.68746582 -0.57426021 -0.53886494 -0.18594193]]
    [3 3 3 ..., 1 0 4]
    
    import matplotlib.pyplot as plt
    
    clu = kmodel.cluster_centers_
    x = [1,2,3,4,5]
    
    colors = ['red','green','yellow','blue','black']
    for i in range(5):
        plt.plot(x,clu[i],label='clustre '+str(i),linewidth=6-i,color=colors[i],marker='o') 
    
    plt.xlabel('L  R  F  M  C')
    plt.ylabel('values')
    plt.show()
    

    png

    客户价值分析:
    注意kmeans每次运行的时候得到的类会有差别,簇号也会相应的改变,但是中间点基本不会改变:
    L R F M C
    客户群1:[ 1.16443082 -0.3775831 -0.08518766 -0.09323092 -0.15906231] red
    客户群2:[-0.70014625 -0.41584827 -0.15935193 -0.15955595 -0.26734394] green
    客户群3:[ 0.01594116 0.00784598 -0.24843215 -0.25750534 2.08918975] yellow
    客户群4:[ 0.48503896 -0.80134848 2.48281809 2.43536635 0.31393202] blue
    客户群5:[-0.31252471 1.68746582 -0.57426021 -0.53886494 -0.18594193] black

    我们重点关注的是L,F,M,从图中可以看到:
    1、客户群4[blue] 的F,M很高,L也不低,可以看做是重要保持的客户;
    2、客户群3[yellow] 重要发展客户
    3、客户群1[red] 重要挽留客户,原因:入会时间长,但是F,M较低
    4、客户群2[green] 一般客户
    5、客户群5[black] 低价值客户

    展开全文
  • 航空公司客户价值分析一、背景与挖掘目标  客户关系管理是企业的核心问题,关键在于客户分类:区别无价值客户,高价值客户,针对不同客户群体有的放矢投放具体服务方案,实现企业利润最大化的目标。 各大航空...

    航空公司客户价值分析

    一、背景与挖掘目标

       客户关系管理是企业的核心问题,关键在于客户的分类:区别无价值客户,高价值客户,针对不同客户群体有的放矢投放具体服务方案,实现企业利润最大化的目标。

        各大航空公司采取优惠措施喜迎更多客户,国内航司面对客户流失和资源未完全利用等危机,因此建立一个客户价值评估模型来实现对客户的分类。

    二、分析方法与过程

      本次的分析目的在于客户价值识别,客户价值识别最常用的模型是RFM模型:R(最近消费时间间隔)F(消费频率)M(消费金额)。

    飞机票价取决于飞行距离和仓位等级,消费同等金额票价的旅客对航司的价值不一定相同:购买短程头等舱的旅客和购买长途经济舱的旅客,明显前者对航司的贡献更大。所以对M(消费金额)建模时要进行修改:用里程数平均值M和仓位折扣系数平均值C来代替消费的金额。

        同时,考虑旅客中,加入会员的时间越长,客户的潜在价值一般越高,所以定义一个客户关系长度L,作为区分客户的另一指标。

    接下来针对LRFMC模型,对客户进行区分。

    LRFMC模型:

    1)客户关系长度L:航空公司会员时间的长短。

    2)是消费时间间隔R。

    3)消费频率F。

    4)   飞行里程M。

    5)   折扣系数的平均值C。

    LRFMC模型指标含义:

    1)   L:会员入会时间距观测窗口结束的月数。

    2)   R:客户最近一次乘坐公司飞机距离观测窗口结束的月数。

    3)   F:客户在观测窗口内乘坐公司飞机的次数。

    4)   M:客户在观测窗口内累计的飞行里程碑。

    5)   C:客户在观测窗口内乘坐仓位所对应的折扣系数的平均值。

    方法:本案例采用聚类的方法,通过对航空公司客户价值的LRFMC模型的五个指标进行K-Means聚类,识别客户价值。

    三、数据描述

    给出所有属性的基本信息,共25个属性,均无大量缺失现象或缺失现象很少。

     

     

    四、建模

    1、数据探索分析

      对数据进行缺失值分析与异常值分析,分析出数据的规律以及异常值

    查找每列属性观测值个数,最大值,最小值。完整代码如下:


    效果如下:

    2、数据预处理

    (1)数据清洗

    通过数据探索分析,发现数据中存在缺失值,由于原始数据量大,这类数据量少,对其进行丢弃处理。具体处理方法如下:

    1)丢弃票价为空的记录。

    2)丢弃票价为0、平均折扣率不为0、总飞行公里数等于0的记录。

    使用Pandas对满足清洗条件的数据进行丢弃。处理方法:满足清洗条件的一行数据全部丢弃,代码如下:


    (2)属性规约

    根据我们建立的LRFMC模型,提取这五个特征,删除与其不相关的属性。

    (3)数据变换

    将数据变换成‘适当的’格式。通过数据变换来构造这个五个特征。

    计算方式如下:

    (1) L=LOAD_TIME-FFP_DATE

    会员入会时间距观测窗口结束的月数=观测窗口的结束时间-入会时间[单位:月]

    (2) R=LAST_TO_END

    客户最近一次乘坐公司飞机距观测窗口结束的月数=最后一次乘机时间至观测窗口末端时长[单位:月]

    3)F=FLIGHT_COUNT

    客户在观测窗口内乘坐公司飞机的次数=观测窗口飞行次数[单位:次]

    4)M=SEG_KM_SUM

    客户在观测时间内在公司累计的飞行里程=观测窗口的总飞行里数[单位:公里]

    5)C=AVG_DISCOUNT

    客户在观测时间内乘坐舱位所对应的折扣系数的平均值=平均折扣率[单位:无]

    提取5个特征后生成文件:zscoredata.xls

    (4)标准化处理

    5个指标的数据提取后,对每个指标数据分布情况进行分析发现,5个指标的取值范围数据差异较大,为了消除数量级数据带来的影响,需要对数据进行标准化处理。

    标准差标准化处理后,形成ZL、ZR、ZF、ZM、ZC5个属性的数据,如图所示:

    3、模型构建

    客户价值分析模型包括两个:

    1)根据5个特征对客户进行聚类分群。

    2)对每个客户群进行特征分析,分析客户价值,并对每个客户进行排名。

    完整代码如下:


    对数据进行聚类分群的结果:

    注:由于K-Means聚类是随机选择类标号,因此重复此实验得到的结果中的类标号可能与此不同;另外,由于算法的精度问题,重复实验得到的聚类中心也可能略有不同

    五、建模分析与结果

      客户价值分析:

    根据特征值大小总结出每个群体优势特征和弱势特征,将客户群分为四类:

    a重要保持客户:平均折扣率高,乘坐次数或里程高,最近坐过本公司航班。

    b潜在发展客户:平均折扣率较高,乘坐次数和里程较低。

    c重要挽留客户:平均折扣率,乘坐次数或者里程较高,较长时间没坐本公司航班。

    d一般与低价值客户:折扣率低,较长时间未做本公司航班,乘坐次数或里程较低,入会时长短

    分析:

    该实例聚类结果:


    根据聚类结果构造客户群特征分析图。

    代码如下:



    效果如图:


       重要保持客户:对于像“客户5(黄色): 在R最近乘坐时间最小,在F乘坐频率和M里程数上最大” 的旅客属于航空公司的高价值客户,这类人对航空公司贡献巨大,而且这部分人相对人数较少。航空公司应该将优质资源先向他们投放,尽力保持住这类客户,通过专门的营销策略和更优质的服务来提升这一类客户的忠诚度。

        潜在发展客户:对于“客户4(黑色): 在C折扣数上最大 ,而RFMx相对较少的客户” 。虽然这类客户当前价值不是很高,但是作为具有经济实力购买非竞技舱的客户,可以作为潜在的重要客户,重点培养。航司可以采取一些措施提高他们变为竞争对手客户的成本,努力的加强他们的满意度。

        低价值客户:  对于像“客户3(蓝色): 在R最近乘坐时间上最大,在F乘坐频率上最小,在里程数M上最小”这一类客户 以及 像 “客户1(红色):    在L入会时间上最小,在C折扣数上最小”这样的客户,很久没有坐飞机,乘坐频率和里程数也很低,相对来说对航空公司价值较低。

        重要挽留客户: 对于像“客户2(绿色):在L入会时间上最长”,这类客户已经很久没有乘坐航班,但是他们的CFM还可以,这类客户不确定性价高,应该对这类客户采取一定手段对其主动联系,并且投放营销措施来延长其生命周期。


    展开全文
  • Python进行航空公司客户价值分析(数据分析) 学习资料: 图书:《Python数据分析与挖掘实战》(机械工业出版社)第7章 博文:https://blog.csdn.net/a857553315/article/details/79177524 目标 书中介绍了...

    用Python进行航空公司客户价值分析(数据分析)

    学习资料:

    参考图书:《Python数据分析与挖掘实战》(机械工业出版社)第7章

    参考博文:https://blog.csdn.net/a857553315/article/details/79177524

    https://blog.csdn.net/weixin_39722361/article/details/79225305?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

    https://www.kesci.com/home/project/5a71818f94eaea7410491462


    目标

    书中介绍了背景,要求根据背景通过数据挖掘实现如下目标:

    • 借助航空公司客户数据,对客户进行分类
    • 对不同的客户类别进行特征分析,比较不同客户的客户价值
    • 对不同价值的客户类别提供个性化服务,制定相应的营销策略

    分析方法和过程

    FRM模型(Frequency Recency Monetary)

    F:消费频率

    R:最近消费时间间隔

    M:消费金额

    传统的RFM模型分析的属性分箱方法,如图所示。它是依据属性的平均值进行划分,其中大于平均值得表示为向上的箭头(↑),小于平均值的表示为向下的箭头(↓),虽然也能够识别出最具有价值的客户,但是细分的客户群太多,提高了针对性营销的成本。

    书中采用了LRFMC模型的五个指标进行K-Means聚类,识别出最有价值的客户。

    L:客户关系长度

    R:消费时间间隔

    F:消费频率

    M:飞行里程

    C:平均值

    为什么选择这五个指标呢?

    • 选择客户在一定时间内积累的飞行里程M和客户在一定时间内乘坐舱位所对应的折扣系数的平均值C两个指标代替了消费金额。
    • 考虑航空公司会员入会时间的长短在一定程度上能够影响客户价值,所以在模型中增加客户关系长度L,作为区分客户的另一指标。

    指标含义:

    模型 L R F M C
    LRFMC模型 会员入会时间距观测窗口结束的月数 客户最近一次乘坐公司飞机距观测窗口结束的月数 客户在观测窗口内乘坐公司飞机的次数 客户在观测窗口内累计的飞行里程 客户在观测窗口内乘坐舱位所对应的折扣系统的平均值

    分析步骤:

    (1)从航空公司的数据源中进行选择性抽取与新增数据抽取分别形成历史数据和增量数据;

    (2)对步骤(1)中形成的两个数据集进行数据探索分析(EDA)与预处理,包括数据缺失值与异常值的探索分析,数据的属性规约、清洗和变换。

    (3)对步骤(2)中形成的已完成数据预处理的建模数据,基于旅客价值LRFMC模型进行客户分群,对各个客户群进行特征分析,识别出有价值的客户;

    (4)针对模型结果得到不同价值的客户,采用不同的营销手段,提供定制化的服务。


    数据探索分析(EDA)实施

    省略一些代码……

    explore = data.describe(percentiles = [], include = 'all').T #包括对数据的基本描述,percentiles参数是指定计算多少的分位数表(如1/4分位数、中位数等);T是转置,转置后更方便查阅
    explore['null'] = len(data)-explore['count'] #describe()函数自动计算非空值数,需要手动计算空值数
    
    explore = explore[['null', 'max', 'min']]
    explore.columns = [u'空值数', u'最大值', u'最小值'] #表头重命名
    '''这里只选取部分探索结果。
    describe()函数自动计算的字段有count(非空值数)、unique(唯一值数)、top(频数最高者)、freq(最高频数)、mean(平均值)、std(方差)、min(最小值)、50%(中位数)、max(最大值)'''
    
    explore.to_excel(resultfile) #导出结果

    接下来进行数据预处理。

     


    数据预处理

    采用数据清洗、属性规约与数据变换等预处理方法。

    通过EDA分析,发现数据中存在缺失值,票价最小值为0,折扣率最小值为0,总飞行公里数大于0的记录。

    由于原始数据量大,这类数据所占据比例较小,对于问题影响不大,因此对其进行丢弃处理。

    具体方法如下:

    • 丢弃票价为空的记录
    • 丢弃票价为0、平均折扣率不为0、总飞行公里数大于0的记录

     

    通过观测可知,数据集中存在票价为零但是飞行公里大于零的不合理值,但是所占比例较小,这里直接删去

    只保留票价非零的,或者平均折扣率与总飞行公里数同时为0的记录。

     删除后剩余的样本值是62044个,可见异常样本的比例不足1.5%,因此不会对分析结果产生较大的影响。

    属性规约

    选择与LRFMC指标相关的6个属性。删除与其不相关、弱相关或者冗余的属性。

    原始数据集的特征属性太多,而且各属性不具有降维的特征,故这里选取几个对航空公司来说比较有价值的几个特征进行分析,这里并没有完全按照书中的做法选取特征,最终选取的特征是第一年总票价、第二年总票价、观测窗口总飞行公里数、飞行次数、平均乘机时间间隔、观察窗口内最大乘机间隔、入会时间、观测窗口的结束时间、平均折扣率这八个特征。下面说明这么选的理由:

    • 选取的特征是第一年总票价、第二年总票价、观测窗口总飞行公里数是要计算平均飞行每公里的票价,因为对于航空公司来说并不是票价越高,飞行公里数越长越能创造利润,相反而是那些近距离的高等舱的客户创造更大的利益。
    • 当然总飞行公里数、飞行次数也都是评价一个客户价值的重要的指标
    • 入会时间可以看出客户是不是老用户及忠诚度
    • 通过平均乘机时间间隔、观察窗口内最大乘机间隔可以判断客户的乘机频率是不是固定
    • 平均折扣率可以反映出客户给公里带来的利益,毕竟来说越是高价值的客户享用的折扣率越高

     对特征进行变换:

     

    由于不同的属性相差范围较大,这里进行标准化处理

    对于K-Means方法,k的取值是一个难点,因为是无监督的聚类分析问题,所以不寻在绝对正确的值,需要进行研究试探。这里采用计算SSE的方法,尝试找到最好的K数值。编写函数如下:
    
    def distEclud(vecA, vecB):
        """
        计算两个向量的欧式距离的平方,并返回
        """
        return np.sum(np.power(vecA - vecB, 2))
     
    def test_Kmeans_nclusters(data_train):
        """
        计算不同的k值时,SSE的大小变化
        """
        data_train = data_train.values
        nums=range(2,10)
        SSE = []
        for num in nums:
            sse = 0
            kmodel = KMeans(n_clusters=num, n_jobs=4)
            kmodel.fit(data_train)
            # 簇中心
            cluster_ceter_list = kmodel.cluster_centers_
            # 个样本属于的簇序号列表
            cluster_list = kmodel.labels_.tolist()
            for index in  range(len(data)):
                cluster_num = cluster_list[index]
                sse += distEclud(data_train[index, :], cluster_ceter_list[cluster_num])
            print("簇数是",num , "时; SSE是", sse)
            SSE.append(sse)
        return nums, SSE
     
    nums, SSE = test_Kmeans_nclusters(filter_zscore_data)

     画图

    #画图,通过观察SSE与k的取值尝试找出合适的k值
    # 中文和负号的正常显示
    plt.rcParams['font.sans-serif'] = 'SimHei'
    plt.rcParams['font.size'] = 12.0
    plt.rcParams['axes.unicode_minus'] = False
    # 使用ggplot的绘图风格
    plt.style.use('ggplot')
    ## 绘图观测SSE与簇个数的关系
    fig=plt.figure(figsize=(10, 8))
    ax=fig.add_subplot(1,1,1)
    ax.plot(nums,SSE,marker="+")
    ax.set_xlabel("n_clusters", fontsize=18)
    ax.set_ylabel("SSE", fontsize=18)
    fig.suptitle("KMeans", fontsize=20)
    plt.show()

     

     观察图像,并没有的所谓的“肘”点出现,是随k值的增大逐渐减小的,这里选取当k分别取4, 5, 6时进行,看能不能通过分析结果来反向选取更合适的值,k取值4时的代码如下:

    kmodel = KMeans(n_clusters=4, n_jobs=4)
    kmodel.fit(filter_zscore_data)
    # 简单打印结果
    r1 = pd.Series(kmodel.labels_).value_counts() #统计各个类别的数目
    r2 = pd.DataFrame(kmodel.cluster_centers_) #找出聚类中心
    # 所有簇中心坐标值中最大值和最小值
    max = r2.values.max()
    min = r2.values.min()
    r = pd.concat([r2, r1], axis = 1) #横向连接(0是纵向),得到聚类中心对应的类别下的数目
    r.columns = list(filter_zscore_data.columns) + [u'类别数目'] #重命名表头
     
    # 绘图
    fig=plt.figure(figsize=(10, 8))
    ax = fig.add_subplot(111, polar=True)
    center_num = r.values
    feature = ["入会时间", "飞行次数", "平均每公里票价", "总里程", "时间间隔差值", "平均折扣率"]
    N =len(feature)
    for i, v in enumerate(center_num):
        # 设置雷达图的角度,用于平分切开一个圆面
        angles=np.linspace(0, 2*np.pi, N, endpoint=False)
        # 为了使雷达图一圈封闭起来,需要下面的步骤
        center = np.concatenate((v[:-1],[v[0]]))
        angles=np.concatenate((angles,[angles[0]]))
        # 绘制折线图
        ax.plot(angles, center, 'o-', linewidth=2, label = "第%d簇人群,%d人"% (i+1,v[-1]))
        # 填充颜色
        ax.fill(angles, center, alpha=0.25)
        # 添加每个特征的标签
        ax.set_thetagrids(angles * 180/np.pi, feature, fontsize=15)
        # 设置雷达图的范围
        ax.set_ylim(min-0.1, max+0.1)
        # 添加标题
        plt.title('客户群特征分析图', fontsize=20)
        # 添加网格线
        ax.grid(True)
        # 设置图例
        plt.legend(loc='upper right', bbox_to_anchor=(1.3,1.0),ncol=1,fancybox=True,shadow=True)
        
    # 显示图形
    plt.show()

     分别取 k=5;k=6时,做出雷达图进行分析。

     


    结论

    通过观察可知:

    • 当k取值4时,每个人群包含的信息比较复杂,且特征不明显
    • 当k取值5时,分析的结果比较合理,分出的五种类型人群都有自己的特点又不相互重复
    • 当k取值6时,各种人群也都有自己的特点,但是第4簇人群完全在第5簇人群特征中包含了,有点冗余的意思

    综上,当k取值为5时,得到最好的聚类效果,将所有的客户分成5个人群,再进一步分析可以得到以下结论:

    • 第一簇人群,10957人,最大的特点是时间间隔差值最大,分析可能是“季节型客户”,一年中在某个时间段需要多次乘坐飞机进行旅行,其他的时间则出行的不多,这类客户我们需要在保持的前提下,进行一定的发展;
    • 第二簇人群,14732人,最大的特点就是入会的时间较长,属于老客户按理说平均折扣率应该较高才对,但是观察窗口的平均折扣率较低,而且总里程和总次数都不高,分析可能是流失的客户,需要在争取一下,尽量让他们“回心转意”;
    • 第三簇人群,22188人,各方面的数据都是比较低的,属于一般或低价值用户
    • 第三簇人群,8724人,最大的特点就是平均每公里票价和平均折扣率都是最高的,应该是属于乘坐高等舱的商务人员,应该重点保持的对象,也是需要重点发展的对象,另外应该积极采取相关的优惠政策是他们的乘坐次数增加
    • 第五簇人群,5443人, 总里程和飞行次数都是最多的,而且平均每公里票价也较高,是重点保持对象
    • 分析完毕,结果暗合市场的二八法则的,价值不大的第二三簇的客户数最多,而价值较大的第四五簇的人数较少。
       

    持续更新

     

    展开全文
  • 1.背景 准确的客户分类是企业优化营销资源分配的重要依据。 数据:航空公司的会员档案信息和乘坐航班记录 目标:(1)用户分类 (2)不同客户类别特征分析,比较...在具体场景:航空客户价值分析,选择客户在一定...
  • 客户关系管理的关键问题是客户分类,通过客户分类, 针对不同价值的客户制定优化的个性化服务方案,采取不同营销策略 1.2 目标 借助航空公司客户数据,对客户进行分类。 对不同的客户类别进行特征分析,比较不同类...
  • 本文是基于《Python数据分析与挖掘实战》的实战部分的第七章的数据——《航空公司客户价值分析》做的分析。 旨在补充原文中的细节代码,并给出文中涉及到的内容的完整代码。 1)在数据预处理部分增加了属性规约、...
  • 文章目录背景和目标数据客户基本信息乘机信息积分信息脚本data_explore.pydata_clean.pyzscore_data.pyKMeans_cluster....准确的客户分类结果是企业优化营销资源的重要依据,客户分类越来越成为客户关系管理中急需解决
  • python数据分析-客户价值分析

    千次阅读 2018-03-09 20:07:11
    1、借助航空公司的数据进行客户分类 2、比较不同类客户的价值并制定销策略 传统上识别客户价值模型是通过RFM模型: Recency: 最近消费时间间隔 Frequency: 消费频率 Monetary: 消费金额 但是存在问题: ...
  • 航空公司客户价值分析

    千次阅读 2018-04-09 11:22:19
    背景与挖掘目标: 客户的价值分析首先要对客户进行分类,区分无价值的客户,高价值的客户,针对不同的客户群体,制定优化的个性化方案,为了实现航空公司的利益的最大化,我们可以将营销的资源分配给大量的高价值...
  • 此案例来自《Python 数据分析与挖掘实战》 ...1)借助航空公司客户数据,对客户进行分类 2)对不同的客户类别进行特征分析,比较不同类客户客户价值 3)对不同价值的客户类别提供个性化的服务,制定相应的营销策略
  • 简单的介绍一下挖掘的背景与目标,挖掘的背景就是航空公司面临着客户流失、竞争力下降等问题,目标是需要建立一个合理的客户价值评估模型,对客户进行分类区分有价值客户与无价值客户,从而来重新分配资源。...
  • 借助航空公司客户数据,对客户进行分类。 对不同的客户类别进行特征分析,比较不同类客户客户价值。 对不同价值的客户类别提供个性化服务,制定相应的营销策略。 分析方法与过程(选择的原则) 调用CRM中的客户...
  • 本文是基于《Python数据分析与挖掘实战》的实战部分的第七章的数据——《航空公司客户价值分析》做的分析。旨在补充原文中的细节代码,并给出文中涉及到的内容的完整代码。 1)在数据预处理部分增加了属性规约、数据...
  • 本文是基于《Python数据分析与挖掘实战》的第七章的数据——《航空公司客户价值分析》做的分析对部分代码,做出补充,对原文中的雷达图进行了实现。 1. 背景与目标分析 此项目旨在根据航空公司提供的数据,对其客户...
  • python rfm模型实现

    千次阅读 2019-06-26 09:00:53
    原数据是航空公司客户数据,目的是对客户分类(按价值等因素),对不同客户类别进行特征分析,比较不同客户的客户价值,对不同价值的客户提供个性化服务。 所有数据指标如下图所示 RFM模型,及最近消费时间间隔...
  • python数据挖掘》实战篇

    千次阅读 2018-06-20 14:29:12
    第6章:分类-窃电用户自动识别目标模型构建LM-NET和CART数据划分LM神经网络cart决策树模型评价ROC第7章:聚类-航空公司客户价值分析1RFM模型-传统目标1分析方法与过程-数据预处理2构建kmeans模型(无代码:参考模型...
  • 用户群体细分(RFM模型)

    千次阅读 2019-02-03 10:54:09
    1. 背景及目的 ...目的:借助航空公司客户数据,对客户进行分类。 案例来源:《Python数据分析与挖掘》 数据链接:https://pan.baidu.com/s/1-_BtDa-W3CyzKy8jC7bkMQ 提取码:72vp 2. 数据特征...
  • 1.5.4 MySQL客户软件开发库(Connector/ODBC、Connector/J等)的商用许可证 12 1.5.5 PHP项目的客户许可证问题——F(L)OSS特例 12 1.5.6 MySQL软件的版本名称 13 1.5.7 MySQL软件的技术支持合同 14 1.6 MySQL...

空空如也

空空如也

1 2
收藏数 21
精华内容 8
关键字:

航空客户分类分析python

python 订阅