您的位置:首页 > 编程语言 > Python开发

python数据分析与挖掘实战 第七章 拓展思考

2017-10-24 17:00 1381 查看

流失客户分类模型

1 数据预处理

如果动手做过的人可能面临的第一个问题就是,这数据读进pandas怎么弄编码结果都是错的。如果你存在这样的问题,那么我建议你使用NotePad++载入文件以后,改成无BOM的UTF-8编码,然后就可以正常读取了。

数据预处理部分

根据书上的条件,预处理需要分以下几条:

1、老客户:飞行次数大于6次

2、已流失客户:第二年飞行次数’L1Y_Flight_Count’ 低于 第一年飞行次数’P1Y_Flight_Count’ 的50%, 类型为0

3、准流失客户:第二年飞行次数’L1Y_Flight_Count’ 在 第一年飞行次数’P1Y_Flight_Count’ 的 50%-90% 之间, 类型为1

4、未流失客户:第二年飞行次数大于 第一年飞行次数的90%以上, 类型为2

5、单位里程票价:这也是没有现成的,我采用的是((第一年总票价+第二年总票价)/总里程)

6、单位里程积分:(总积分/总里程)

然后因为有些客户没有票价,造成了单位里程票价为0,这类客户不是很多,所以我也就全部丢弃掉了。最后,把小数部分都取成2位。得到结果如下图:



然后进行标准化,这次我采用的是max-min标准化。得到的结果是:



到这里数据应该算准备完成了。但我在这里遇见了一个问题,在把这个数据导入KMeans的时候,会报一个ValueError的错误。所以需要通过以下代码,解除错误。

# data_zc就是上面的表
from sklearn.preprocessing import Imputer
data_zcc = pd.DataFrame(Imputer().fit_transform(data_zc))


进行Kmeans分类,代码不贴了,基本就是书上一样的,不过这里只分3个质心。

然后划分80%数据为训练集,20%为测试集。在这里其实我有一个很大的疑惑以至于我对整个过程表示怀疑。通过KMeans对以上的数据进行了分类,那么训练集和测试集有本质性的区别吗?为什么不把测试集做为增量数据和训练集一起进行训练分类呢?当然,如果训练级如果确实数量很大,那么从性能角度而言,确实分开比较好。



好了,无论如何,我也把训练数据分成了三类。

那么下面就是要分析一下,这三类究竟是什么情况了。

分析结果

0群:会员等级高,平均出行间隔短,平均里程长,积分兑换次数高,单位里程票价和单位里程积分高,人数最少,那么我认为这就是可以算是铁杆客户,这一类客户当然是VIP咯。但是这一类客户的MEMBER_TYPE并不都是2,也就是说部分客户已经减少了通过航空公司出行的量,针对这一部分客户应当加强回访,找出这一部分客户为什么会减少出行的原因,进行改进。

我们看一下这群体客户的原始数据。



很明显,这一群的客户数据都好好看。

1群:可以说所有数据都在中等水平,但是呢MEMBER_TYPE值缺最低,那么意味着这一类的客户里面,第二年的飞行里程已经达不到第一年的50%了。那么这一类客户基本上说是已经流失的客户了。

我们也看一下这个群体的客户原始数据。



很明显,这一群体里面第二年的乘机次数都有明显的下降。对于这一群体中的会员卡等级较高且第一年乘机次数较多的客户,应当进行回访,了解客户为什么会减少乘机次数,找出原因进行改进。争取把这一部分流失的客户重新召回。

2群:所有值都处于最低,人数也最广。但是MEMBER_TYPE确是最高的值。我们先来看一下,这一群体的数据究竟是怎样的。



根据数据,我们可以认为,这一群体应该是刚刚加入这家航空公司不久的会员,所以会员等级等等数据并不是那么好看,但是他们都有一个共同的特征,就是他们的飞行次数在增加。也就是他们正处于一个上升区间,把这一群体的客户努力转变为0群客户,那么就可以增加忠诚用户的数量。这显然是至关重要的。那么可以通过给这些会员更多的晋升VIP等级,更好的折扣加强用户存在感等等营销方式呵护这一群体。

个人评论

对于结果分析部分,其实我个人并不是很有信心,因为相同的数据在不同人的眼里结论是不一样的。在我们国家航空公司并没有很多,最主要的也就是几大航空公司,对于客户而言选择飞行的时间日期可能比选择航空公司而言的优先度更高一些,所以我大体认为三个群体对应的是三种人群。

第0群,这一类就是传说中的空中飞人,经常出差工作,飞来飞去是航空公司的常客。

第1群,曾经他们是空中飞人,但是现在可能转换工作不太需要出差了,所以出行次数变少。

第2群,将要成为空中飞人的人或者每年有固定飞行计划的人,又不需要出差的工作转为常常需要出差飞行的工作,或者这些客户一年就飞个3-4次,比如去某个城市开个季度会议之类,所以飞行量不是很大,但是次数也比较固定。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 数据分析