网站建设企业建站模板,五屏网站建设怎样,seo是什么意思广东,wordpress网站seo文章目录 0. 数据代码下载1. 背景与挖掘目标2. 导入相关库#xff0c;加载数据2.1客户基本信息分布a. 绘制会员性别比例饼图b. 绘制会员各级别人数条形图c. 绘制年龄分布图 2.2 客户乘机信息分布分析a. 绘制客户飞行次数箱线图b. 绘制客户总飞行公里数箱线图 2.3 客户积分信息… 文章目录 0. 数据代码下载1. 背景与挖掘目标2. 导入相关库加载数据2.1客户基本信息分布a. 绘制会员性别比例饼图b. 绘制会员各级别人数条形图c. 绘制年龄分布图 2.2 客户乘机信息分布分析a. 绘制客户飞行次数箱线图b. 绘制客户总飞行公里数箱线图 2.3 客户积分信息分布分析a. 绘制会员总累计积分箱线图 3. 相关性分析4. 数据预处理4.1 数据变换 5. K-means客户聚类分析5.1 绘制客户关系雷达图 0. 数据代码下载
关注公众号『AI学习星球』 回复航空公司客户价值分析 即可获取数据下载。 算法学习、4对1辅导、论文辅导或核心期刊可以通过公众号或CSDN滴滴我 1. 背景与挖掘目标 客户关系管理是精准化运营的基础而客户关系管理的核心是客户分类。通过客户分类对客户群体进行细分区别出低价值客户与高价值客户对不同的客户群体开展不同的个性化服务将有限的资源合理地分配给不同价值的客户从而实现效益最大化。 总体流程:
抽取航空公司2012年4月1日至2014年3月31日的数据。对抽取的数据进行数据探索分析与预处理包括数据缺失值与异常值的探索分析、数据清洗、特征构建、标准化等操作。基于RFM模型使用K-Means算法进行客户分群。针对模型结果得到不同价值的客户采用不同的营销手段提供定制化的服务。
2. 导入相关库加载数据
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as snsimport warnings
warnings.filterwarnings(ignore)
plt.style.use(ggplot)
%matplotlib inline
from pylab import *
mpl.rcParams[font.sans-serif] [SimHei]air_data pd.read_csv(air_data.csv,encodingutf8)
air_data查看数据结构,6W的数据44个字段包含了客户的基本信息客户乘机信息和客户的积分信息
air_data.head()air_data.info()2.1客户基本信息分布
选取客户基本信息中的入会时间、性别、会员卡级别和年龄字段进行探索分析探索客户的基本信息分布情况
#处理入会时间拿到年份并按时间排序
air_data[year] pd.to_datetime(air_data[FFP_DATE]).dt.year
air_data air_data.sort_values(by[year],ascendingTrue)
air_data air_data.reset_index(dropTrue)sns.countplot(year,dataair_data)
plt.title(每年入会人数,fontsize14)a. 绘制会员性别比例饼图
air_data[GENDER].value_counts().plot.pie(shadowTrue,autopct%.2f%%,labels[男,女])b. 绘制会员各级别人数条形图
air_data.FFP_TIER.value_counts().plot.bar(labelgrade,colordodgerblue)
plt.title(会员各级别人数, fontsize20)
plt.xlabel(会员等级, fontsize14)
plt.ylabel(人数, fontsize14)c. 绘制年龄分布图
age air_data[AGE].dropna()
age age.astype(int64)
fig plt.figure(figsize (5 ,10))
plt.boxplot(age, labels [AGE],patch_artistTrue,boxprops {facecolor:lightblue})
plt.title(age)可以看出大部分会员年龄集中在3050岁之间极少量的会员年龄小于20岁或高于60岁且存在一个超过100岁的异常数据
2.2 客户乘机信息分布分析
lte air_data[LAST_TO_END]
plt.figure(figsize (5,8))
plt.boxplot(lte,patch_artistTrue,labels [Time],boxprops {facecolor:lightblue})
plt.title(乘机时长分布箱线图)a. 绘制客户飞行次数箱线图
fc air_data[FLIGHT_COUNT]
plt.figure(figsize (5 ,8))
plt.boxplot(fc, patch_artistTrue,labels [FLIGHT_COUNT],boxprops {facecolor:lightblue})
plt.title(飞行次数箱线图)b. 绘制客户总飞行公里数箱线图 客户的飞行次数与总飞行公里数也明显地分为两个群体大部分客户集中在箱型图下方的箱体中少数客户分散分布在箱体上界的上方这部分客户很可能是高价值客户因为其飞行次数和总飞行公里数明显超过箱体内的其他客户
2.3 客户积分信息分布分析
ec air_data[EXCHANGE_COUNT]fig plt.figure(figsize (8 ,5))
plt.hist(ec, bins5, colorlightblue)
plt.xlabel(兑换次数)
plt.ylabel(会员人数)
plt.title(会员兑换积分次数分布直方图)绘制会员兑换积分次数直方图,绝大部分客户的兑换次数在010的区间内这表示大部分客户都很少进行积分兑换
a. 绘制会员总累计积分箱线图
ps air_data[Points_Sum]fig plt.figure(figsize (5 ,8))
plt.boxplot(ps, patch_artistTrue,labels [总累计积分], # 设置x轴标题boxprops {facecolor:lightblue}) # 设置填充颜色
plt.title(客户总累计积分箱线图)一部分客户集中在箱体中少部分客户分散分布在箱体上方这部分客户的积分要明显高于箱体内的客户的积分。
3. 相关性分析
air_data[AGE].fillna(0,inplaceTrue)
air_data[AGE].astype(int64)data_2 air_data[[FFP_TIER,FLIGHT_COUNT,LAST_TO_END,SEG_KM_SUM,EXCHANGE_COUNT,Points_Sum,AGE]]data_corr data_2.corr(method pearson)
print(相关性矩阵为\n,data_corr)plt.subplots(figsize(10, 10))
sns.heatmap(data_corr, annotTrue, vmax1, squareTrue, cmapBlues)可以看出部分属性间具有较强的相关性如FLIGHT_COUNT飞行次数属性与SEG_KM_SUM飞行总公里数属性也有部分属性与其他属性的相关性都较弱如AGE年龄属性与EXCHANGE_COUNT积分兑换次数属性
4. 数据预处理
丢弃票价为空的记录保留票价不为0的或者平均折扣率不为0且总飞行公里数大于0的记录丢弃年龄大于90的记录
air_data air_data.dropna(axis0,subset[SUM_YR_1,SUM_YR_2])air_data air_data[((air_data[SUM_YR_1]0) | (air_data[SUM_YR_2]0)) (air_data[SEG_KM_SUM]0) (air_data[avg_discount]0) (air_data[AGE]90)]航空公司客户价值分析的LRFMC模型
在RFM模型中消费金额表示在一段时间内客户购买该企业产品的金额的总和。由于航空票价受到运输距离、舱位等级等多种因素的影响同样消费金额的不同旅客对航空公司的价值是不同的例如一位购买长航线、低等级舱位票的旅客与一位购买短航线、高等级舱位票的旅客相比后者对于航空公司而言更有价值。因此这个特征并不适用于航空公司的客户价值分析。本案例选择客户在一定时间内累积的飞行里程M和客户在一定时间内乘坐舱位所对应的折扣系数的平均值C两个特征代替消费金额。此外航空公司会员入会时间的长短在一定程度上能够影响客户价值所以在模型中增加客户关系长度L作为区分客户的另一特征。将清洗好的数据保存并重新读进来
air_data.to_csv(cleandata.csv)clean_data pd.read_csv(cleandata.csv,encodingutf8)
airline_selection clean_data[[FFP_DATE,LOAD_TIME,LAST_TO_END,FLIGHT_COUNT,SEG_KM_SUM,avg_discount]]
airline_selection.head()4.1 数据变换
将数据转换成“适当的”格式以适应挖掘任务及算法的需要。
会员入会时间距观测窗口结束的月数L会员入会时长客户最近一次乘坐公司飞机距观测窗口结束的月数R最后一次乘机时间至观测窗口末端时长单位月客户在观测时间内在公司累计的飞行次数F观测窗口内的飞行次数客户在观测时间内在公司累计的飞行里程M观测窗口总飞行公里数单位公里 客户在观测时间内乘坐舱位所对应的折扣系数的平均值C平均折扣率单位无
在完成5个指标的数据提取后发现5个指标的取值范围数据差异较大为了消除数量级数据带来的影响需要对数据进行标准化处理。
L pd.to_datetime(airline_selection[LOAD_TIME]) - pd.to_datetime(airline_selection[FFP_DATE])
L L.astype(str).str.split().str[0]
L L.astype(int)/30airline_features pd.concat([L,airline_selection.iloc[:,2:]],axis 1)
airline_features.columns [L,R,F,M,C]
print(构建的LRFMC属性前5行为\n,airline_features.head())from sklearn.preprocessing import StandardScaler
data StandardScaler().fit_transform(airline_features)
#np.savez(./airline_scale.npz,data)
print(标准化后LRFMC五个属性为\n,data[:5,:])5. K-means客户聚类分析
import sklearn.cluster as sc
model sc.KMeans(n_clusters5,n_jobs4,random_state123)
model.fit(data)
print(聚类中心:\n,model.cluster_centers_)
print(样本类别标签:\n,model.labels_)
print(不同类别样本的数目:\n,pd.Series(model.labels_).value_counts())cluster_center pd.DataFrame(model.cluster_centers_,\columns [ZL,ZR,ZF,ZM,ZC])
cluster_center.index pd.DataFrame(model.labels_ ).\drop_duplicates().iloc[:,0]
print(cluster_center)5.1 绘制客户关系雷达图
labels [ZL,ZR,ZF,ZM,ZC]
legen [ customers str(i 1) for i in cluster_center.index]
lstype [-,--,(0, (3, 5, 1, 5, 1, 5)),:,-.]
kinds list(cluster_center.iloc[:, 0])
并转换为 np.ndarray
cluster_center pd.concat([cluster_center, cluster_center[[ZL]]], axis1)
centers np.array(cluster_center.iloc[:, 0:])n len(labels)
angle np.linspace(0, 2 * np.pi, n, endpointFalse)
angle np.concatenate((angle, [angle[0]]))fig plt.figure(figsize (8,6))
ax fig.add_subplot(111, polarTrue) for i in range(len(kinds)):ax.plot(angle, centers[i], linestylelstype[i], linewidth2, labelkinds[i])
ax.set_thetagrids(angle * 180 / np.pi, labels)
plt.title(Customer Profile Analysis)
plt.legend(legen)通过建立合理的客户价值评估模型对客户进行分类分析比较不同客户群体的价值并制定相应的营销策略对不同的客户群提供个性化的客户服务是必须的和有效的。 关注公众号『AI学习星球』 回复航空公司客户价值分析 即可获取数据下载。 算法学习、4对1辅导、论文辅导或核心期刊可以通过公众号或CSDN滴滴我