当前位置:   article > 正文

数据挖掘:航空公司的客户价值分析

数据挖掘:航空公司的客户价值分析

需求分析

理解并掌握聚类分析方法,掌握数据的标准化,掌握寻找最佳聚类数,掌握聚类的绘图,掌握聚类分析的应用场景。

系统实现

实验流程分析

  • 借助航空公司数据,对客户进行分类
  • 对不同类别的客户进行特征分析,比较不同类别客户的价值
  • 对不同价值的客户类别进行个性化服务,制定相应的营销策略

数据准备

  • 加载本次实验所需要用到的包

打开spyder,输入以下代码

  1. import pandas as pd
  2. import numpy as np
  3. from sklearn.metrics import silhouette_score
  4. from sklearn.decomposition import PCA
  5. from sklearn.cluster import KMeans,AgglomerativeClustering
  6. from sklearn.preprocessing import StandardScaler
  7. import matplotlib.pyplot as plt
  8. import datetime
  9. plt.rcParams['font.sans-serif']=['SimHei'] #中文正常显示
  10. plt.rcParams['axes.unicode_minus']=False #让负号正常显示
  • 读取数据,查看数据和整理数据信息

  https:staticfile.eduplus.netldataSetsystemLiblc3b5c0f37fe24797808613bc713d5585.rar。压缩包中的数据为csv数据,解压并将该数据移动到c:/数据分析/data目录中

读取并查看数据

 

取出SUM_YR_1和SUM_YR_2不为空的样本
 

去除掉第一年、第二年票价均为0,同时平均折扣系数大于零和飞行里程大于零的数据
 

  • 取出LRFMC模型数据,并整理

取出LRFMC模型数据

计算入会天数 

  1. L = pd.to_datetime(new_data['LOAD_TIME'])-pd.to_datetime(new_data['FFP_DATE'])
  2. L = np.int64(L.astype(str).str.split().str[0]) # 会员入会天数
  3. L=pd.DataFrame(L,columns=['Days'])
  4. air_features = pd.concat([L, new_data.iloc[:, 2:]], axis=1) # 横向拼接
  5. print(air_features.head())

更改列名,描述性统计 

 重置索引

数据标准化

 

寻找最佳聚类个数

  • 绘制拐点图,寻找下降最剧烈的点
  1. sse=[]
  2. for i in range(2,10):
  3. result=KMeans(i,random_state=100).fit(data_scale)
  4. sse.append(result.inertia_)
  5. plt.figure()
  6. plt.plot(range(2,10),sse,marker='o')
  7. plt.xlabel('k')
  8. plt.ylabel('sse')
  9. plt.show()

k=3/4时最激烈 

  • 绘制轮廓系数图,寻找轮廓系数高的点
  1. sil=[]
  2. for i in range(2,8):
  3. result=KMeans(i,random_state=100).fit(data_scale)
  4. sil.append(silhouette_score(air_features,result.labels_))
  5. plt.figure()
  6. plt.plot(range(2,8),sil,marker='o')
  7. plt.xlabel('k')
  8. plt.ylabel('sil')
  9. plt.show()

 k=2/3轮廓系数最高,综合k=3

建立聚类模型

  • 绘制聚类图,观察聚类情况

kmeans聚类

绘制聚类图

结果分析

  • 合并数据,并加入分类

  • 聚合各类,对各特征计算平均值

  • 加入客户分类并画图
  1. def customer_type(cluser):
  2. if cluser==0:
  3. return '重要发展客户'
  4. elif cluser==1:
  5. return '最重要客户'
  6. else:
  7. return '一般客户'
  8. air_features['客户类型']=air_features['cluster'].apply(customer_type)
  9. print(air_features.head())

 绘制图像

  1. customer_count=air_features['客户类型'].value_counts()
  2. plt.figure()
  3. plt.subplot(1,2,1)
  4. plt.bar(customer_count.index,customer_count.values)
  5. #添加文本
  6. for a,b in zip(customer_count.index,customer_count.values):
  7. plt.text(a,b,b,ha='center',va='bottom',color='b')
  8. plt.subplot(1,2,2)
  9. plt.pie(customer_count.values,labels=list(customer_count.index),autopct='%.1f%%', textprops={'color':'r'},shadow=True)
  10. plt.legend(loc=1)
  11. plt.show()

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号