本文是《Python数据分析与挖掘实战》的学习笔记.
1.背景与挖掘目标:
客户的价值分析首先要对客户进行分类,区分无价值的客户,高价值的客户,针对不同的客户群体,制定优化的个性化方案,为了实现航空公司的利益的最大化,我们可以将营销的资源分配给大量的高价值客户的群体。
数据挖掘实现的目标是:
1> 借助航空公司的客户数据,对客户进行分类.
2>对不同的客户类别进行特征的分析,比较不同类型客户的客户价值.
3>对不同价值的客户类别提供个性化的服务,制定相应的营销策略.
2.分析方法与分析过程:
本案例的目标是客户价值的识别,即通过航空公司的客户数据去识别不同价值的客户。识别客户价值应用最广泛的模型是通过三个指标(最近消费时间间隔(Recency),消费频率(Frequency)和消费金额(Monetary))来进行客户的细分,识别出高价值的客户群体.简称RFM模型..
<在数据挖掘上,我们基于实际问题的背景知识是非常重要的,上面的RFM模型就是分析客户价值金和客户的创利能力的重要工具与手段,在众多的客户关系管理的分析模型上,RFM模型是被广泛提到的。该机械模型是通过一个客户的近期购买行为,购买总体频率与花钱的数目这三者为衡量指标,描述客户的价值状况>
具体到本案例上,我们注意到,消费金额不能笼统的作为衡量客户价值的一个指标,因为航空公司的座位是有不同的等级的,一个长距离低等舱的旅客花费的金额可能与短距离高等舱的花费是相同的,但是在数据分析上,针对这两个客户群的价值区分是不一样的.因此我们要将其区分对待.
我们选择客户的在一定时间内累计飞行里程M和客户在一定时间上的乘坐舱位所对应的折扣系数的平均值C.
针对上面的一些列问题,我们对这个模型进行改进,改进后的模型,我们将其命名为LRFMC模型.
我们将其划分五个属性后,采用聚类的方式来识别客户的价值。通过对航空公司的客户价值的模型的五个指标进行K-Means聚类,识别出最有价值的客户群.
总体的流程图如下展示:
针对上面的流程图,主要的步骤:
1>对数据进行抽取(选择性抽取与新增信息的抽取)
2>对数据集进行探索分析与预处理,包括数据缺失值与异常值的探索分析,数据属性的规约,清洗与变换
3>针对预处理后的数据建模,聚类操作,将不同的客户群体进行分群的操作
4>针对不同得客户群进行不同得营销操作.
数据探索分析:
本案例的数据探索分析主要是对数据进行缺失值与异常值分析,分析出数据的规律与异常值。
下面的代码主要是针对查找每列属性的观测值的空值,最大值与最小值的Python代码
在这段代码中,主要是应用了describe函数,
# -*- coding: utf-8 -*-
"""
Created on Sun Apr 8 15:03:11 2018
@author: Administrator
"""
#数据探索分析代码
#对数据进行基本的探索,返回缺失值个数与最大值最小值
import pandas as pd
datafile='E:/air_data.csv'
resultfile='E:/explore.xls'
data=pd.read_csv(datafile,encoding='utf-8')
explore=data.describe(percentiles=[],include='all').T
explore['null']=len(data)-explore['count']
explore=explore[['null','max','min']]
explore.columns=[u'空值数',u'最大值',u'最小值']
explore.to_excel(resultfile) #导出计算的结果
结果的部分截图:
数据的预处理:
在数据的预处理上,主要使用的是数据清洗,属性规约与数据变换的预处理方式
数据清洗:
通过数据的探索分析,发现数据中存在缺失值,票价最小值为0,折扣率最小值为0,总飞行公里数大于零的记录,由于原始的数据量是比较大的,而这类数据是比较小的,对问题的影响是不大的,因此可以将其丢弃/
# -*- coding: utf-8 -*-
"""
Created on Sun Apr 8 15:51:10 2018
@author: Administrator
"""
#数据清洗的代码
import pandas as pd
datafile='E:/air_data.csv'
cleanedfile='E:/data_cleaned.xls'
data=pd.read_csv(datafile,encoding='utf-8')
#这里我们保留票价为非空值的数据,
data=data[data['SUM_YR_1'].notnull()&data['SUM_YR_2'].notnull()]
#只保留票价非零,或者平均折扣率与总飞行公里数同时为0的记录
index1=data['SUM_YR_1']!=0
index2=data['SUM_YR_2']!=0
index3=(data['SEG_KM_SUM']==0)&(data['avg_discount']==0)
data=data[index1|index2|index3] #该规则为或规则
data.to_excel(cleanedfile) #进行导出结果数据
属性规约:
原始数据的属性过多,我们只选择对分析问题有价值的属性,剔除掉与其分析问题无关的属性,最后,我们选取其中的六个属性.
数据变换:
数据变换是将数据转化为适当的格式,以适应数据挖掘得需要.
不同属性之间的量纲是不同的,为此,需要对其进行标准差标准化。将其转化为在一致的量刚下.
# -*- coding: utf-8 -*-
"""
Created on Sun Apr 8 16:43:09 2018
@author: Administrator
"""
#标准差标准化、
import pandas as pd
datafile='E:/zscoredata.xls'
zscoredfile='E:/zscoreddata.xls'
#对其数据进行标准化处理
data=pd.read_excel(datafile)
data=(data-data.mean(axis=0))/(data.std(axis=0))
data.columns=['Z'+i for i in data.columns] #对表头进行重命名
data.to_excel(zscoredfile,index=False)
其标准差标准化后,结果为:
模型的构建:
客户价值分析模型主要是由两个部分组成的,第一个部分是根据公司的五个指标进行聚类的分析,将客户进行聚类分群。第二部分是结合业务对每一个客户群的特征进行分析,分析客户的价值,并且对每一个客户群进行排名.
1>客户聚类:
这里采用K-Means聚类算法对客户数据进行客户分群,这里将数据分成五个群.
# -*- coding: utf-8 -*-
"""
Created on Mon Apr 9 09:28:04 2018
@author: Administrator
"""
#K-Means聚类算法
import pandas as pd
from sklearn.cluster import KMeans
from pandas import DataFrame,Series
inputfile='E:/zscoreddata.xls'
#需要进行聚类的类别数
k=5
#读取数据文件并进行聚类分析
data=pd.read_excel(inputfile)
#调用K-Means聚类算法,进行聚类分析
kmodel=KMeans(n_clusters=k,n_jobs=4)#n_jobs是并行数,一般等于cpu数目比较好
kmodel.fit(data)
labels=kmodel.labels_ #产看各个样本的类别
demo=DataFrame(labels,columns=['numbers'])
demo1=DataFrame(kmodel.cluster_centers_,columns=data.columns) #保存聚类中心
demo2=demo['numbers'].value_counts()
demo4=pd.concat([demo2,demo1],axis=1)
demo4.index.name='labels'
demo4.to_excel('E:/kmeans.xls')
print(kmodel.cluster_centers_)
print(kmodel.labels_)
将数据进行聚类处理后,将其分成五个类别,通过分析后,得到下面的结论:
由此可见,客户群1是航空公司最有价值的客户,因此我们的重要资源都应该集中在这些客户群体的身上,客户群2是重要发展的群体,是航空公司要重点发展的对象,这些群体是很有潜力的,具有良好消费能力,如果能够发展这些具有潜力的客户群,势必会为公司带来巨大的利益.
客户群3是航空公司要进行挽留的客户群,因为这些客户群极不稳定,因此航空公司针对这一部分的客户群,要更加的提出优惠的条件,能够挽留住这一步的客户群,以后也会带来很大的利益空间.
剩下的两个客户群,是航空公司比较低价值的客户群,也不是说这些客户群就不重要,毕竟他们的基数是非常大的,可能考虑到他们的消费能力等各方面的因素,航空公司可以针对这一部分的客户群大力的优惠条件,这样,由于基数大,不仅赢得了口碑,更能带来巨大的利益.
总结:
在国内航空市场竞争日益激烈的背景下,航空公司在客户流失方面应该引起足够的重视,如何改善流失问题,继而提高客户的满意度,忠诚度是航空公司维护自身市场并面对竞争的一件大事,利用上述的分析模型能够帮助航空公司有针对性的对不同的消费群体采取不同的应对措施.