• 1.航空公司部分数据特征说明及LRFMC模型介绍及K-Means聚类算法介绍
  • 2.开始数据分析
    - 数据探索

    • Part Ⅰ:数据预处理

      • 数据清洗
      • 数据集成
      • 数据归约
      • 数据变换
    • Part Ⅱ:建模分析和性能评估
    • Part Ⅲ:结果可视化:雷达图

1.航空公司部分数据特征说明及LRFMC模型介绍

#### 航空公司部分数据特征说明

LRFMC模型

1.RFM模型介绍

本项目的目标是客户价值分析,即通过航空公司客户数据识别不同价值的客户,识别客户价值应用最广泛的模型是RFM模型。

R(Recency)指的是最近一次消费时间与截止时间的间隔。通常情况下,最近一次消费时间与截止时间的间隔越短,对即时提供的商品或是服务也最有可能感兴趣。
F(Frequency)指顾客在某段时间内所消费的次数。可以说消费频率越高的顾客,也是满意度越高的顾客,其忠诚度也就越高,顾客价值也就越大。
M(Monetary)指顾客在某段时间内所消费的金额。消费金额越大的顾客,他们的消费能力自然也就越大,这就是所谓“20%的顾客贡献了80%的销售额"的二八法则。

2.用于此项目的弊端

在RFM模型中,消费金额表示在一段时间内,客户购买该企业产品金额的总和,由于航空票价受到运输距离,舱位等级等多种因素影响,同样消费金额的不同旅客对航空公司的价值是不同的,因此这个特征并不适合用于航空公司的客户价值分析。

3.LRFMC模型

本项目选择客户在一定时间内累积的飞行里程M和客户在一定时间内乘坐舱位所对应的折扣系数的平均值C两个特征代替消费金额。此外,航空公司会员入会时间的长短在一定程度上能够影响客户价值,所以在模型中增加客户关系长度L,作为区分客户的另一特征。
本项目将客户关系长度L,消费时间间隔R,消费频率F,飞行里程M和折扣系数的平均值C作为航空公司识别客户价值的关键特征,记为LRFMC模型。
如图

K-Means聚类算法介绍

1.基本概念

K-Means聚类算法是一种基于质心的划分方法,输入聚类个数k,以及包含n个数据对象的数据库,输出满足误差平方和最小标准的k个聚类。算法步骤如下:

(1)从n个样本数据中随机选取k个对象作为初始的聚类中心。
(2)分别计算每个样本到各个聚类质心的距离,将样本分配到距离最近的那个聚类中心类别中。
(3)所有样本分配完成后,重新计算k个聚类的中心。
(4)与前一次计算得到的k个聚类中心比较,如果聚类中心发生变化,转(2),否则转(5)
(5)当质心不发生变化时停止并输出聚类结果。

2.数据类型

K-Means聚类算法是在数值类型数据的基础上进行研究,然而数据分析的样本复杂多样,因此要求不仅能够对特征为数值类型的数据进行分析,还要适应数据类型的变化,对不同特征做不同变换,以满足算法的要求。

3.参数介绍


--------------点击此处返回最顶端---------------------

2.开始数据分析

数据探索

首先先对数据集进行查看,对要分析的对象有大致的感觉。

需要注意的是:这里我们指定为UTF-8编码,因此需要用文本编辑器(如Notepad++等软件)将数据装换为UTF-8编码
可能遇到的问题:
1 - 出现中文路径使用: engine=‘python’
2 - 解码格式有这些一般: encoding=‘utf-8’ gbk gb2312

# 加载函数库
import numpy as np
import pandas as pd# 加载数据
datafile = "air_data.csv"
data = pd.read_csv(datafile, encoding='utf-8') #读取原始数据,指定UTF-8编码
# 前五行数据预览
data.head()

# 基本属性信息
data.info()

# 数值属性的中心趋势度量,转置一下,看得更清楚
data.describe().T

PartⅠ:数据预处理

目的是为了获得高质量的数据用于数据挖掘建模

数据清洗

*删除缺失数据*

原因:通过数据探索分析,发现数据中存在缺失值,票价最小值为0、折扣率最小值为0、总飞行公里数大于0的记录。由于原始数据量大,这类数据所与比例较小,对于问题影响不大,因此对其进行丢弃处理。具体处理方法如
1.丢弃票价为空的记录。
2.丢弃票价为0、平均折扣率不为0、总飞行公里数大于0的记录。

#票价非空值才保留
data = data[data['SUM_YR_1'].notnull()&data['SUM_YR_2'].notnull()]#只保留票价非零的,或者平均折扣率与总飞行公里数同时为0的记录。
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]
print("清洗后的样本数量为 ",len(data))# 输出为:清洗后的样本数量为  62044
数据集成

由于。。不需要数据集成

数据规约

*主要是属性规约*

原始数据中属性太多,根据航空公司客户价值LRFMC模型,选择与LRFMC指标相关的6个属性:FFP_DATE、LOAD_TIME、FLIGHT_COUNT、AVG_DISCOUNT、SEG_KM_SUM、LAST_TO_END。
删除与其不相关、弱相关或冗余的属性,例如,会员卡号、性别、工作地城市、工作地所在省份、工作地所在国家和年龄等属性。经过属性选择后的数

# 基于LRFMC模型获得候选属性
df = data[['FFP_DATE','LOAD_TIME','avg_discount','FLIGHT_COUNT','SEG_KM_SUM','LAST_TO_END']]
df.head()

# 构造L特征
df['L'] = (pd.to_datetime(data['LOAD_TIME']) - pd.to_datetime(data['FFP_DATE'])).dt.days #计算日期差,单位为天数
df.head()

# 构造R-M-F-C四个特征 (通过列名重命名)
df.rename(columns={'LAST_TO_END':'R','FLIGHT_COUNT':'F','SEG_KM_SUM':'M','avg_discount':'C'},inplace = True)
df.head()

# 删除多余的特征
df.drop(['FFP_DATE','LOAD_TIME'],axis=1, inplace = True)
df.head()

数据变换

*数据变换是将数据转换成“适当的“格式,以适应挖掘任务及算法的需要*。

本案例中主要采用的数据变换方式为属性构造和数据标准化。

# 计算每个特征的均值和标准差,然后Z-score标准化
df = (df - df.mean(axis=0))/(df.std(axis=0))df.columns = ['Z'+i for i in df.columns]  #对数据列名重命名
df.head()


Tips:
做一个简单的相关分析:sns.pairplot()是将pandas对象的每一列与其他列做两两的相关分析,同时可视化结果
图的含义是:几乎大部分的图都呈散点分布,说明这两个属性之间几乎没关系,如果有关系的话,应该是一条线(线性相关),这对于我们来说是个好处,因为这几个属性相互独立。

import matplotlib.pyplot as plt
import seaborn as sns%matplotlib inline
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号sns.pairplot(df)
plt.show()

Part 2: 建模分析和性能评估

*我们采用K-Means聚类算法,看看是不是可以将客户分到不同的簇,对应于不同价值的客户群* Tips:聚类最好的点是:图像变化的时候,从*变得*最快到最慢的那个拐点的地方是最好的聚类簇

# 从sklearn导入聚类算法函数
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_scorerandom_state = 5
score = []
inertia = []# 遍历多个可能的候选簇数量
for n_clusters in range(3,20):kmeans = KMeans(n_clusters=n_clusters, random_state=random_state)kmeans.fit(df)inertia.append(kmeans.inertia_)#衡量模型性能score.append(silhouette_score(df, kmeans.labels_,sample_size=128, metric='euclidean')) #衡量聚类算法的指标plt.figure(figsize=(10, 6))
plt.subplot(121)
plt.plot(score)
plt.grid(linestyle=':')
plt.xlabel('K')
plt.ylabel('Score')
plt.title('Performance of K-means')plt.subplot(122)
plt.plot(inertia)
plt.grid(linestyle=':')
plt.xlabel('K')
plt.ylabel('Inertia')
plt.title('Inertia of K-means')
plt.show()

# 从sklearn导入聚类算法函数
from sklearn.cluster import KMeans# 定义簇数量
k = 5           # 初始化Kmeans模型
kmodel = KMeans(n_clusters=k)
kmodel.fit(df) #查看聚类中心
print(kmodel.cluster_centers_) '''
输出结果:
[[-0.25513154 -0.16114258 -0.16095751 -0.41488827 -0.70020646][ 0.30863003  2.4832016   2.42472391 -0.79938326  0.48332845][-0.1733261  -0.57401599 -0.53682019  1.68625847 -0.31367829][-0.1559046  -0.08691852 -0.09484404 -0.37722119  1.16066672][ 2.19134701 -0.22680311 -0.23125407 -0.00266813  0.05184279]]
'''
Part 3: 结果可视化:雷达图

*我们采用雷达图来比较不同客户群之间的异同*

# 特征标签
labels = df.columns# 特征数量
k = 5 # 可视化数据对象
plot_data = kmodel.cluster_centers_
color = ['b', 'g', 'r', 'c', 'y'] angles = np.linspace(0, 2*np.pi, k, endpoint=False)
plot_data = np.concatenate((plot_data, plot_data[:,[0]]), axis=1) # 闭合
angles = np.concatenate((angles, [angles[0]])) # 闭合fig = plt.figure(figsize=(10,8))
ax = fig.add_subplot(111, polar=True) for i in range(len(plot_data)):ax.plot(angles, plot_data[i], 'o-', color = color[i], label = u'客户簇'+str(i+1), linewidth=2)# 画线ax.set_rgrids(np.arange(0.01, 3.5, 0.5), np.arange(-1, 2.5, 0.5), fontproperties="SimHei")
ax.set_thetagrids(angles * 180/np.pi, labels, fontproperties="SimHei")plt.legend(loc = 4)
plt.title("航空公司客户价值分析 - 雷达图")
plt.show()

python航空公司客户价值分析相关推荐

  1. Python:航空公司客户价值分析实战

    一.背景及挖掘目标 1.行业背景 随着大数据的来临,传统的商业模式正在被一个新的营销模式-"数据化营销"所替代,采取不同的营销策略,将有限的资源集中在高价值的客户上,实现企业利润的 ...

  2. python客户价值分析_Python数据分析与应用航空公司客户价值分析.ppt

    Python数据分析与应用航空公司客户价值分析.ppt 大数据,成就未来 * 大数据挖掘专家 * 大数据挖掘专家 大数据,成就未来 航空公司客户价值分析 * 目录 分析航空公司现状 1. 行业内竞争 ...

  3. Python数据挖掘:利用聚类算法进行航空公司客户价值分析

    无小意丶 个人博客地址:无小意 知乎主页:无小意丶 公众号: 数据路(shuju_lu) 刚刚开始写博客,希望能保持关注,会继续努力. 以数据相关为主,互联网为辅进行文章发布. 本文是<Pyth ...

  4. 航空公司客户价值分析python实战

    航空公司客户价值分析(K_Means聚类分析) 最近在看黄红梅.张良均老师主编的<Python数据分析与应用>,拿书里的案例练练手. 本案例将使用航空公司客户数据,结合RFM模型,采用K_ ...

  5. Python数据挖掘-RFM模型K-means聚类分析-航空公司客户价值分析

    使用教材:<Python数据分析与挖掘实战> 模型:RFM模型 算法:K-means聚类:其他方法还用到了层次聚类 数据:需要数据的可以评论里call. 内容: (1)案例: 航空公司客户 ...

  6. 《Python数据分析与挖掘实战》第7章——航空公司客户价值分析(kmeans)

    本文是基于<Python数据分析与挖掘实战>的实战部分的第七章的数据--<航空公司客户价值分析>做的分析. 旨在补充原文中的细节代码,并给出文中涉及到的内容的完整代码. 1)在 ...

  7. python客户价值分析_航空公司客户价值分析实例

    第8章 航空公司客户价值分析 传统的识别客户价值应用最广泛的模型主要通过3个指标(最近消费时间间隔(Recency).消费频率(Frequency)和消费金额(Monetary))来进行客户细分,识别 ...

  8. 【毕业设计】大数据分析的航空公司客户价值分析 - python

    文章目录 0 前言 1 数据分析背景 2 分析策略 2.1 航空公司客户价值分析的LRFMC模型 2.2 数据 2.3 分析模型 3 开始分析 3.1 数据预处理 3.1.1 数据预览 3.1.2 数 ...

  9. 数据分析与挖掘实战-航空公司客户价值分析

    航空公司客户价值分析 项目背景 信息时代的到来注定营销焦点从产品中心转到了用户中心,客户关系管理成为企业的核心问题. 客户关系管理的关键问题则是客户分类,通过分类区分客户价值的有无和高低,针对不同类别 ...

最新文章

  1. systick定时器 延时计时
  2. 白话解析:一致性哈希算法 consistent hashing
  3. python list操作复杂度
  4. Java 中 int 转 char
  5. (转载)图文推荐给开发人员非常实用的站点
  6. ORACLE OUI 中断 do not have sufficient permissions /u01/app/oraInventory
  7. 读Zepto源码之IOS3模块
  8. 强烈推荐仔细多看几遍《Exceptional C++ Style中文版》的第17、18、19节
  9. zen3 服务器芯片,AMD EPYC霄龙服务器处理器亮相,Zen3架构性能飙升
  10. Android-Ble蓝牙通讯开发–扫描,连接,发送和接收数据,分包解包(附源码)
  11. 微软亚洲研究院 (MSRA) 的实习体验如何?
  12. 数据结构童话版 001新的学年
  13. python外包挺多,但具体什么价位呢,今天我们来采集一下外包网~
  14. 模板--二分图最大匹配
  15. sa结构组网方式_中兴解读:SA组网解决方案
  16. 语法格式描述规范BNF、EBNF、ABNF
  17. 关于移动硬盘或U盘数据丢失恢复工具
  18. 王志东:解决来自腾讯QQ的威胁
  19. 计算字符串中某段字符出现次数
  20. 3月28日出生的赵姓女孩根据生辰八字取名字有内涵诗意的名字

热门文章

  1. 官网下载JDK历史版本方法
  2. Hexo + github搭建个人博客(2022年7月)
  3. 360华为鸿蒙,360宣布:全力适配以华为鸿蒙为代表的新系统!
  4. Geany Windows(GTK 3+ )修改皮肤
  5. c语言立flag是什么意思,“立flag”是什么意思
  6. win10暴力查看wifi密码
  7. 最近火起的 Bean Searcher 与 MyBatis Plus 到底有啥区别?
  8. 哲学视频笔记--李小龙的精神境界2
  9. 亲手搭建美团外卖、饿了么外卖红包公众号
  10. 怎么提取短视频中的文字?元引擎可以轻松做到