航空公司客户价值分析

1.目标分析
根据客户数据和用户类别特征,对客户进行分类,从而针对不同用户制定相应的营销策略。
2.简单分析
(1)识别客户价值的指标:最近消费时间间隔(Recency)、消费频率(Frequency)、消费金额(Monetary)
金额的衡量指标模糊(如在长途低等舱位用户和短途高等舱位的用户选择问题中),将其分为飞行里程数(M)和折扣系数的平均值(C)
,再加上客户关系长度(客户入会时间)组成最终的衡量指标组。
(2)数据模型需要对根据指标进行分类,故考虑采用K-Means算法分类。
(3)实现步骤
1)数据获取:选取宽度为两年的时间段 数据,后续新增数据也加入形成历史数据。
2)数据探索分析和预处理
3)数据建模
4)模型测试
3.数据探索分析
目的:进行缺失值和异常值分析
查询数据中出现特殊情况有:票价为空值,票价最小值小于0,折扣率最小值为0、总飞行距离大于0;

#对数据进行分析,获取空值、最大值、最小值
import pandas as pd
datafile = "E:/MachineLearning-data/Aviation_Value_02/air_data.csv"#原始数据位置
resultfile = "E:/MachineLearning-data/Aviation_Value_02/explore.xls"#结果数据位置

data = pd.read_csv(datafile,encoding='utf-8')#读取数据,编码设置

#percentiles为计算分位数表,默认为25%,50%,75%
#include:包含所有数据
#T:将数据进行转置,原始每一列的名称作为行元素,对每一列的属性进行三种值的统计
explore = data.describe(percentiles=[],include='all').T
#统计空值的数据个数,数据描述中count为非空值数据个数
explore['null'] = len(data)-explore['count']
#数据描述会给出相应值
explore = explore[['null','max','min']]
#对每一列进行命名
explore.columns = [u'空值数',u'最大值',u'最小值']
explore.to_excel(resultfile)
统计结果如:https://pan.baidu.com/s/1jHSGDJg所示

4 .数据预处理
(1)数据清洗
通过分析发现,数据中存在(缺失值),(票价最小值为0),(折扣率最小值不为0,但总飞行公里数大于0)的三类异常记录,由于数据量巨大,而此类数据所占比例较小,所以考虑将其丢弃。

import pandas as pd 
datafile = "E:/MachineLearning-data/Aviation_Value_02/air_data.csv"
cleanfile = "E:/MachineLearning-data/Aviation_Value_02/data_clean.xls"

data = pd.read_csv(datafile,encoding='utf-8')
#对两年数据进行非空检测,一旦有一年为空,则认为为空
data = data[data["SUM_YR_1"].notnull()*data["SUM_YR_2"].notnull()]
index1 = data["SUM_YR_1"]!=0
index2 = data["SUM_YR_2"]!=0
index3 = (data['SEG_KM_SUM']==0)&(data['avg_discount']==0)
#第一年票价为0或第二年票价为0,或者票价进行打折的数据
data = data[index1|index2|index3]
data.to_excel(cleanfile)
结果如:https://pan.baidu.com/s/1dFIrITj所示

(2)属性制约
所有属性中删除与其不相关、弱相关或冗余地属性
(3)数据变换
5个数据指标的取值范围差异较大,为了消除数量级数据带来的影响,考虑将其进行标准化处理。

import pandas as pd
datafile = "E:/MachineLearning-data/Aviation_Value_02/zscoredata.xls"
zscoredfile = "E:/MachineLearning-data/Aviation_Value_02/zscoredata1.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)
标准化的数据如:https://pan.baidu.com/s/1c1EFIyG

5.模型建立
客户聚类:

import pandas as pd
from sklearn.cluster import KMeans

inputfile = "E:/MachineLearning-data/Aviation_Value_02/zscoredata1.xls"
k = 5
data = pd.read_excel(inputfile)
#聚类为5类,并行数为4,最好和CPU数量一致
kmodel = KMeans(n_clusters=k,n_jobs=4)
kmodel.fit(data)
#查看聚类中心
kmodel.cluster_centers_
#查看个样本类别
kmodel.labels_

6.思考与总结
1)Scikit-Learn中KMeans函数中的初始化中心可以使用什么算法得到?默认是什么算法?
答:采用层次聚类输出k个簇,以簇的中心点作为k-means的初始化中心。
2)使用不同的预处理对数据进行变换,在使用K-Means算法进行分类,对比聚类结果,分析不同的数据预处理对K-Means算法的影响

备注:实验中用到的数据来源

链接:https://pan.baidu.com/s/1bo3S0hh 密码:pzke

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值