logo资料库

数据挖掘项目航空公司客户价值分析.pdf

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
数据集:http://pan.baidu.com/s/1clfQY6 挖掘目标 (1) 根据航空公司客户数据对客户进行分类。 (2) 对不同的客户类别进行特征分析,比价不同类客户的客户价值。 (3) 对不同价值的客户类别提供个性化服务,制定相应的营销策略。 分析方法与过程 识别客户价值应用最广泛的模型指标:最近消费时间间隔,消费频率,消费金额(RFM 模型)。 本案例考虑项目指标(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 聚类,识别客户价值。 总体流程:数据抽取->数据预处理(数据清洗(缺失值填补舍弃等),属性规约(提取需要 特征数据),数据变换(转换适当格式))->建模->结果 代码实践 1. 数据抽取 以 2014-03-31 为结束时间,选取宽度为两年的时间段为分析窗口,抽取观测窗口内有乘机 记录的所有客户的详细数据形成历史数据。 抽取 2012-04-01 至 2014-03-31 所有乘客的详细数据,总共 62988 条,44 个属性。 2. 数据探索分析 查找每列属性观测值个数,最大值,最小值。完整代码如下: # -*- coding: UTF-8 -*- #对数据进行基本的探索 #返回缺失值个数以及最大值最小值 import pandas as pd datafile='air_data.csv'#航空原始数据,第一行为属性标签
resultfile='explore.xls'#数据探索结果表 data=pd.read_csv(datafile,encoding='utf-8') #读取原始数据,指定UTF-8编码(需要 用文本编辑器将数据转换为UTF-8) explore=data.describe(percentiles=[],include='all').T #.T对数据进行转置,方便 查阅,percentiles是指定计算多少的分位数(如1/4分位数,中位数) '''describe()函数自动计算字段 count(非空值),unique(唯一值),top(频数最高 者),freq(最高频数),std(方差),min(最小值), 50%(中位数),max(最大值)''' explore['null']=len(data)-explore['count'] #describe()函数自动计算非空值,需要 手动计算空值,每个属性空值数 explore=explore[['null','max','min']] explore.columns=[u'空值数',u'最大值',u'最小值'] #表头重命名 explore.to_excel(resultfile) #导出结果
3. 数据预处理 数据清洗,属性规约,数据变换。 3.1 数据清洗 通过数据探索分析,发现数据中存在缺失值,由于原始数据量大,这类数据量少,对其进行 丢弃处理。 (1)丢弃票价为空的记录。 (2)丢弃票价为 0、平均折扣率不为 0、总飞行公里数等于 0 的记录。 满足清洗条件的一行数据全部丢弃,使用 Pandas 对满足清洗条件的数据进行丢弃。 完整代码如下: # -*- coding: UTF-8 -*- # 数据清洗,过滤掉不符合规则的数据 import pandas as pd datafile = 'air_data.csv' # 航空原始数据,第一行为属性标签 cleanedfile = 'data_cleaned.scv' # 数据清洗后保存文件 data = pd.read_csv(datafile, encoding='utf-8') # 读取原始数据,指定UTF-8编码 data = data[data['SUM_YR_1'].notnull() * data['SUM_YR_2'].notnull()] # 票价非空值才保留 # 只保留票价非零的,或者平均折扣率与总飞行公里数同时为0的记录 index1 = data['SUM_YR_1'] != 0 # 属性下面返回True或者False index2 = data['SUM_YR_2'] != 0 index3 = (data['SEG_KM_SUM'] == 0) & (data['avg_discount'] == 0) # 该规则是与 ' data = data[index1 | index2 | index3] data.to_csv(cleanedfile, encoding='utf-8') # 导出实验结果 3.2 属性规约 根据我们建立的 LRFMC 模型,提取这五个特征,删除语气不相关的属性。 3.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 发现 5 个特征取值范围差异较大,现对数据进行标准化 # -*- coding: UTF-8 -*- # 对数据进行基本的探索 # 返回缺失值个数以及最大值最小值 import pandas as pd datafile = 'zscoredata.xls' # 航空原始数据,第一行为属性标签 zscoredfile = '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) # 写入数据,False不要序列
4. 构建模型 客户价值分析模型包括两个: (1) 根据 5 个特征对客户进行聚类分群。 (2) 对每个客户群进行特征分析,分析客户价值,并对每个客户进行排名。 完整代码如下: #-*- coding: utf-8 -*- #K-Means聚类算法 import pandas as pd from sklearn.cluster import KMeans #导入K均值聚类算法 inputfile = 'zscoreddata.xls' #待聚类的数据文件 k = 5 #需要进行的聚类类别数 #读取数据并进行聚类分析 data = pd.read_excel(inputfile) #读取数据 #调用k-means算法,进行聚类分析 if __name__=='__main__': kmodel = KMeans(n_clusters = k, n_jobs = 8) #n_jobs是并行数,一般等于CPU 数较好 kmodel.fit(data) #训练模型
kmodel.cluster_centers_ #查看聚类中心 kmodel.labels_ #查看各样本对应的类别 客户价值分析: 根据聚类结果构造客户群特征分析图。 根据特征值大小总结出每个群体优势特征和弱势特征,将客户群分为四类: 重要保持客户:平均折扣率高,乘坐次数或里程高,最近坐过本公司航班。 重要发展客户:平均折扣率较高,乘坐次数和里程较低。 重要挽留客户:平均折扣率,乘坐次数或者里程较高,较长时间没坐本公司航班。 一般与低价值客户:折扣率低,较长时间未做本公司航班,乘坐次数或里程较低,入会时长短。
分享到:
收藏