KMeans算法项目实战:航空公司客户价值分析

您所在的位置:网站首页 东方航空公司的客户分类 KMeans算法项目实战:航空公司客户价值分析

KMeans算法项目实战:航空公司客户价值分析

2024-07-04 19:35| 来源: 网络整理| 查看: 265

一、背景与目标

  通过对客户进行分类,区分无价值客户、高价值客户,企业针对不同价值的客户制定优化的个性化服务方案,采取不同营销策略,将有限营销资源集中于高价值用户,实现企业利润最大化目标。   数据为某航空公司的用户档案信息与航班记录。

字段名称字段说明FFP_DATE入会时间LOAD_TIME观测窗口的结束时间FLIGHT_COUNT观测窗口内的飞行次数avg_discount平均折扣率SEG_KM_SUM观测窗口内的总飞行公里数LAST_TO_END最后一次成绩时间至观测窗口结束时长SUM_YR观测窗口的票价收入 二、分析方法与过程

  本案例的目标是客户价值识别,即通过航空公司客户数据识别不同价值的客户。识别客户价值应用最广泛的模型是通过3个指标(最近消费时间间隔(Recency)、消费频率(Frequency)和消费金额(Monetary))来进行客户细分,识别出高价值的客户,简称RFM模型。   在RFM模型中,消费金额表示在一段时间内,客户购买该企业产品金额的总和。由于航空票价收到运输距离、舱位等级等多种因素影响,同样消费金额的不同旅客对航空公司的价值是不同的。因此,我们使用客户在一定时间内累计的飞行里程M和客户在一定时间内乘坐舱位所对应的的折扣系数的平均值C两个指标代替消费金额。此外,考虑航空公司会员入会时间的长短在一定程度上能够影响客户价值,所以在模型中增加客户关系长度L,作为区分客户的另一个指标。   本案例将客户长度L、消费时间间隔R、消费频率F、飞行里程M和折扣系数的平均值C五个指标作为航空公司识别客户价值指标,记为LRFMC指标。   通过对航空公司客户价值的LRFMC模型的五个指标进行K-Means聚类,识别出最有价值客户。

三、代码实现过程 1.数据探索 import numpy as np import pandas as pd # 数据读取 data = pd.read_csv("air_data.csv") # 数据探索 explore = data.describe(percentiles=[],include='all').T explore['null'] = len(data)-explore["count"] explore = explore[['null','max','min']]

在这里插入图片描述

2.数据预处理

  通过数据探索分析,发现数据中存在缺失值与异常值。比如:票价最小值为0,折扣率最小值为0,总飞行公里数大于0的记录。由于原始数据量大,选择进行丢弃处理。

①.数据清洗 # 数据清洗 data = data[data['SUM_YR_1'].notnull()*data['SUM_YR_1'].notnull()] 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] ②.属性规约

  挑选出LRFMC模型需要的字段,删除不相关的属性。

data = data[['FFP_DATE','LOAD_TIME','FLIGHT_COUNT','avg_discount','SEG_KM_SUM','LAST_TO_END']] ③.数据变换

  原始数据中并没有直接给出LRFMC五个指标,需要通过原始数据进行计算这五个指标:

L = LOAD_TIME - FFP_DATE   会员入会时间距观测窗口结束的月数【单位:月】 R = LAST_TO_END  客户最近一次乘坐公司飞机距观测窗口结束的月数【单位:月】 F = FLIGHT_COUNT  客户在观测窗口内乘坐公司飞机的次数【单位:次】 M = SEG_KM_SUM  观测时间内累计飞行里程【单位:公里】 C = AVG_DISCOUNT  观测时间内乘坐舱位对应的折扣系数的平均值【单位:无】

data["L"]= round(pd.to_timedelta(pd.to_datetime(data["LOAD_TIME"]) - pd.to_datetime(data["FFP_DATE"])).dt.days/30,2) data["R"] = round((data['LAST_TO_END']/30).max(),2) data["F"] = data["FLIGHT_COUNT"] data["M"] = data["SEG_KM_SUM"] data["C"] = round(data["avg_discount"],2) clean_data = data[["L","R","F","M","C"]] ④.数据标准化

  指标数据提取后,发现5个指标的取值范围数据差异较大,为了消除数量级数据带来的影响,需要对数据进行标准化处理。

zscore_data = (clean_data-clean_data.mean())/clean_data.std() zscore_data.columns = ["Z" + i for i in zscore_data.columns] zscore_data.head()

在这里插入图片描述

3.模型构建

使用K-Means聚类算法对客户数据进行客户分群,娶成5类。

from sklearn.cluster import KMeans # 导入K均值聚类算法 k = 5 # 需要进行的聚类类别数 kmodel = KMeans(n_clusters=k,n_jobs=4) kmodel.fit(zscore_data) # 训练模型 kmodel.cluster_centers_ # 查看聚类中心 r1 = pd.Series(kmodel.labels_).value_counts() # 统计分类情况 r2 = pd.DataFrame(kmodel.cluster_centers_) # 聚类中心

在这里插入图片描述

4.可视化 import matplotlib.pyplot as plt import matplotlib as mpl myfont = mpl.font_manager.FontProperties(fname='SimHei.ttf') r1 = pd.Series(kmodel.labels_).value_counts() # 统计各个类别的数目 r2 = pd.DataFrame(kmodel.cluster_centers_) r = pd.concat([r2, r1], axis=1) # 横向连接(0是纵向),得到聚类中心对应的类别下的数目 fig = plt.figure(figsize=(10,8)) ax = fig.add_subplot(1,1,1,polar = True) for i,data in enumerate(r.iloc[:,:-1].values): angle = np.linspace(0, 2*np.pi, len(data), endpoint=False) angles = np.concatenate((angle, [angle[0]])) data = np.concatenate((data, [data[0]])) ax.set_thetagrids(angles*180/np.pi, labels=zscore_data.columns, fontproperties = myfont) #设置网格标签 ax.plot(angles,data,"o-") ax.set_theta_zero_location('NW') #设置极坐标0°位置 ax.set_rlim(-1,2.5) #设置显示的极径范围 ax.fill(angles,data,facecolor='g', alpha=0.2) #填充颜色 # ax1.set_rlabel_position('255') #设置极径标签位置 ax.set_title("客户群特征分析图",fontproperties = myfont,fontsize=16,) #设置标题 plt.show()

在这里插入图片描述

三.客户价值分析

  由上述的特征分析的图说明每个客户群都有显著不同的表现特征,基于该特征描述,定义五个等级的客户类型:

重要保持客户:这类客户的平均折扣率C较高,最近乘坐过本公司航班R低,乘坐的次数F或里程M较高。他们是航空公司的高价值客户,是最为理想的客户类型,对航空公司的贡献最大,所占比例却较小。航空公司应优先将资源投放到他们身上。重要发展客户:这类客户的平均折扣率C较高,最近乘坐过本公司航班R低,但乘坐次数F或乘坐里程M较低。这类客户入会时间L短,他们是航空公司的潜在客户。虽然这类客户的当前价值不是很高,但却有很大的发展潜力。重要挽留客户:这类客户过去所乘航班的平均折扣率C、乘坐次数F或者里程M较高,但是较长时间已经没有乘坐本公司的航班R或者乘坐频率变小。他们客户价值变化的不确定性很高。航空公司应该采取一定的营销手段,延长客户的生命周期。一般与低价值客户:这类客户所乘航班的平均折扣率较低,较长时间没有乘坐过本公司航班,乘坐的次数或里程较低,入会时间短。他们是航空公司的一般用户或者低价值用户。

项目参考:《Python数据分析与挖掘实战》



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3