信息时代的来临使得企业营销焦点从产品转向了客户,客户关系管理,而客户关系管理的关键问题是客户分群。通过客户分群,区分无价值客户和高价值客户。
本次利用获取到的航空公司客户数据,结合RFM模型,采用K-Means聚类算法,分类出不同具有客户价值分群,以此学习kmeans算法的实际运用。
实现目标
(1)对原始数据集进行分析,提取我们需要使用的数据
(2)对抽取的数据进行数据清洗、特征构建和标准化等操作。
(3)基于RFM模型,使用K-Means算法进行客户分群。
(4)针对模型结果得到不同价值的客户。
实现
相关数据说明及代码意义可参考《Python数据分析与应用》第七章
数据air_data.csv下载
提取码:www
1.数据集分析
我们的数据集总共62 988条记录。其中包含了会员卡号、入会时间、性别、年龄、会员卡级别、工作地城市、工作地所在省份、工作地所在国家、观测的窗口结束时间、总累计积分、观测窗口的总飞行千米数、观测窗口内的飞行次数、平均乘机时间间隔和平均折扣系数等25个特征。如下所示:
import numpy as np
import pandas as pd
airline_data = pd.read_csv("D:\\myData\\code\\python\\data\\air_data.csv",encoding ="gb18030")
print(airline_data.shape)
airline_data.head()
2.预处理航空客户数据:
(1)处理数据缺失值与异常值。
#去除票价为空的记录
exp1 = airline_data["SUM_YR_1"].notnull()
exp2 = airline_data["SUM_YR_2"].notnull()
exp = exp1 & exp2
airline_notnull = airline_data.loc[exp,:]
print("删除缺失记录后数据的形状为:", airline_notnull.shape)
删除缺失记录后数据的形状为: (62299, 44)
(2)丢弃票价为空的记录,丢弃票价为0、平均折扣率不为0、总飞行千米数大于0 的记录。
#清除异常数据,如票价为零,折扣为零,飞行距离小于大于零的数据
index1 = airline_notnull['SUM_YR_1'] != 0
index2 = airline_notnull['SUM_YR_2'] != 0
index3 = (airline_notnull['SEG_KM_SUM'] > 0) & (airline_notnull