《机器学习Python实战》课件 19-项目9 项目拓展-航空公司客户价值分析_第1页
《机器学习Python实战》课件 19-项目9 项目拓展-航空公司客户价值分析_第2页
《机器学习Python实战》课件 19-项目9 项目拓展-航空公司客户价值分析_第3页
《机器学习Python实战》课件 19-项目9 项目拓展-航空公司客户价值分析_第4页
《机器学习Python实战》课件 19-项目9 项目拓展-航空公司客户价值分析_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

机器学习Python实战

项目9

项目拓展--航空公司客户价值分析航空公司客户价值分析

航空公司拥有大量的乘客数据,但问题是:哪些客户是真正高价值的?

哪些客户值得投入更多资源去维系?传统的方法可能只看总消费金额,但这样太粗放了。我们需要一种数据驱动的方法,从客户的行为模式中自动发现不同的群体。这里我们就要应用k-Means聚类算法——它能够根据客户在多个维度上的行为特征,把相似的客户聚在一起,从而帮助我们识别出不同类型的客户群。

使用航空公司客户数据,结合客户价值分析模型,采用k均值聚类算法,对客户进行分群,比较不同类别客户的客户价值。任务目标航空公司客户价值分析航空公司客户价值分析RFM模型最近一次消费距今的时间(Recency)R一定时间内的消费频率(Frequency)F一定时间内的消费总金额(Monetary)M3个指标RFM模型是客户价值分析的经典框架,通过三个核心指标刻画客户行为:航空公司客户价值分析LRFMC模型

传统RFM模型中的M(消费金额)在航空业中存在问题:相同金额可能对应短途头等舱或长途经济舱,两者对航空公司的价值完全不同。因此将M替换为飞行里程(SEG_KM_SUM),更直接反映客户对航司的贡献。同时引入平均折扣率(avg_discount)作为补充指标,折扣率数值越高(即购买全价票越多)的客户价值越高。购买长航线、低等级舱位票的旅客购买短航线、高等级舱位票的旅客更高航空公司客户价值分析LRFMC模型平均折扣率=客户购买机票时所享受折扣力度的平均水平=C距离因素=一定时间内积累的飞行里程=M考虑到航空公司的会员系统,用户的入会时间长短能在一定程度上影响客户价值,所以增加指标:入会时间长度=客户关系长度=L

本例中,由于航空公司受飞行距离、平均折扣率影响,因此需要引入LRFMC模型进行适配。航空公司客户价值分析LRFMC模型最近乘机距今的时间间隔R飞行次数F飞行总里程M平均折扣率C入会时长L航空公司客户价值分析LRFMC模型L会员入会时间距观测窗口结束的月数。R客户最近一次乘坐航空公司飞机距离观测窗口结束的月数。F客户在观测窗口内乘坐航空公司飞机的次数。M客户在观测窗口内累计的飞行总里程。C客户在观测窗口内乘坐仓位所对应的折扣系数的平均值。航空公司客户价值分析1.读取并查看数据利用pandas.read_csv()方法读取航空公司客户详细信息文件air_data.csv,该数据集是航空公司整理的教学案例数据集,选取时间段“2012-4-1”至“2014-3-31”import

pandas

as

pd

data

=

pd.read_csv('air_data.csv',encoding='gb18030')print(data.shape)#查看前5行data.head()图1航空公司客户数据前5行航空公司客户价值分析2.构建LRFMC模型选择与LRFMC模型指标相关的6个属性:FFP_DATELOAD_TIMEFLIGHT_COUNTavg_discountSEG_KM_SUMLAST_TO_END

航空公司客户价值分析2.构建LRFMC模型(1)入会时间长度L=观测窗口的结束时间−入会时间(单位:月),如式(9-1)所示:L=LOAD_TIME−FFP_DATE (9-1)R=LAST_TO_END (9-2)F=FLIGHT_COUNT (9-3)(2)最近乘机距今的时间长度R(单位:月),如式(9-2)所示:(3)飞行次数F(单位:次),如式(9-3)所示:航空公司客户价值分析2.构建LRFMC模型M=SEG_KM_SUM (9-4)C=avg_discount (9-5)(4)飞行总里程M(单位:千米),如式(9-4)所示:(5)平均折扣率C(单位:无),如式(9-5)所示: 航空公司客户价值分析2.构建LRFMC模型#L:入会时间长度(月)L=(pd.to_datetime(data['LOAD_TIME'])-pd.to_datetime(data['FFP_DATE'])).dt.days/30#合并指标,提取'LAST_TO_END'、'FLIGHT_COUNT'、'SEG_KM_SUM'、'avg_discount'四列与L指标,利用pandas.concat()进行列合并,并赋值给变量features

features

=

pd.concat((L,

data[['LAST_TO_END',

'FLIGHT_COUNT',

'SEG_KM_SUM',

'avg_discount']]),

axis=1)#将变量

features

的列名重命名为

'L','R','F','M','C'features.columns

=

['L','R','F','M','C']print("特征预览:")print(features)print("\n特征描述统计:")print(features.describe())航空公司客户价值分析2.构建LRFMC模型图2LRFMC数据航空公司客户价值分析3.数据标准化完成LRFMC模型5个指标的提取后,查看每个特征的数据分布情况。#查看各组数据的最大值、最小值features.describe()图3各组数据最大值、最小值从输出可见,L、R、M等指标量级差异很大(L约为几十个月,M可达数十万千米),若直接使用原始数据进行距离计算,量级大的指标会主导聚类结果。航空公司客户价值分析3.数据标准化由于不同的特征量级差异较大,因此这里对其进行标准化处理。#导入标准化函数

StandardScalerfrom

sklearn.preprocessing

import

StandardScalerscaler

=

StandardScaler()#对变量

features

进行标准化处理features_scaler

=

scaler.fit_transform(features)航空公司客户价值分析4.模型构建k-means算法主要就在于k值的确定上面,到底是将k值确定为几才能进行更好的分类?因为是无监督学习的聚类分析问题,所以不存在绝对正确的值,需要进行研究试探。这里采用计算SSE绘制手肘图的方法,尝试找到最佳的k值。航空公司客户价值分析4.模型构建from

sklearn.cluster

import

KMeans

import

matplotlib.pyplot

as

plt#肘方法确定k值inertia

=

[]k_range=range(1,9)for

k

in

k_range:

model

=

KMeans(n_clusters=k,random_state=42)

model.fit(features_scaler)

#inertia_样本到最近的聚类中心的距离平方之和

inertia.append((model.inertia_)

plt.figure(figsize=(8,5))plt.plot(k_range,inertia,'o-')plt.xlabel('k')plt.ylabel('Inertia(SSE)')plt.title('肘方法确定最佳k值')plt.show()航空公司客户价值分析4.模型构建图4航空公司客户信息手肘图肘图中,距离平方和Inertia随k增大单调递减,在k=4到k=5区间下降速度明显放缓。结合业务场景此处选择k=5作为聚类数。航空公司客户价值分析4.模型构建#构建k-means模型,聚类中心数

n_clusters=5kmodel

=

KMeans(n_clusters

=

5,random_state=42)#训练模型kmodel.fit(features_scaler)#查看样本的类别标签kmodel.labels_图5样本的类别标签航空公司客户价值分析4.模型构建#统计各簇样本数量cluster_counts=pd.Series(kmodel.labels_).value_counts().sort_index()#获取聚类中心cluster_centers=pd.DataFrame(kmodel.cluster_centers_,columns=features.columns)#合并聚类中心与样本数量cluster_summary=pd.concat([cluster_centers,cluster_counts],axis=1)cluster_summary.columns=list(features.columns)+['样本数量']print(cluster_summary)统计各个类别的数目图6各个类别的数目航空公司客户价值分析5.绘制雷达图针对聚类结果,绘制雷达图进行特征分析。#

绘制雷达图#

中文和负号的正常显示plt.rcParams['font.sans-serif']

=

'SimHei'plt.rcParams['font.size']

=

12.0plt.rcParams['axes.unicode_minus']

=

False#设置特征标签名feature_names

=

["L入会时长",

"R最近乘机时间间隔",

"M飞行总里程",

"F飞行次数",

"C平均折扣率"]#特征数目N

=len(feature)航空公司客户价值分析5.绘制雷达图#极坐标角度设置angles=np.linspace(0,2*np.pi,N,endpoint=False)angles=np.concatenate((angles,[angles[0]]))#闭合#标签闭合labels=np.concatenate((feature_names,[feature_names[0]]))#创建画布fig=plt.figure(figsize=(10,8))ax=fig.add_subplot(111,polar=True)ax.set_thetagrids(angles*180/np.pi,labels,fontsize=15)#绘图数据:聚类中心+样本数plot_data=cluster_summary.valuesfori,rowinenumerate(plot_data):#取出聚类中心(5维),首尾拼接实现闭合center_vals=np.concatenate((row[:-1],[row[0]]))ax.plot(angles,center_vals,'o-',linewidth=2,label=f"第{i+1}簇人群,{int(row[-1])}人")ax.fill(angles,center_vals,alpha=0.25)plt.title('客户群特征分析雷达图',fontsize=20)plt.legend(loc='upperright',bbox_to_anchor=(1.3,1.0))plt.show()航空公司客户价值分析5.绘制雷达图图7客户群特征分布雷达图航空公司客户价值分析6.总结分析价值等级客户类型对应簇核心特征运营策略★★★★★重要保持客户第3簇,4567人F高、M高、R低最高资源倾斜★★★★☆重要发展客户

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论