点击标题下「蓝色微信名」点击设置星标第一时间送达

本文所有代码都通过运行!

  • 我们说RFM模型由R(最近消费时间间隔)、F(消费频次)和M(消费总额)三个指标构成,通过该模型识别出高价值客户。

  • 但该模型并不完全适合所有行业,如航空行业,直接使用M指标并不能反映客户的真实价值,因为“长途低等舱”可能没有“短途高等舱”价值高。所以得根据实际行业灵活调整RFM模型的指标。

  • 本文就拿航空公司的数据为例,将RFM模型构建成L(入会至当前时间的间隔,反映可能的活跃时长)、R(最近消费时间距当前的间隔,反映当前的活跃状态)、F(乘机次数,反映客户的忠诚度)、M(飞行里程数,反映客户对乘机的依赖性)和C(舱位等级对应的折扣系数,侧面反映客户价值高低)5个指标。

  • 下面就利用这5个指标进行客户价值分群的实战:

01

导入包和数据

1import pandas as pd
2import numpy as np
3from sklearn.cluster import KMeans
4import matplotlib.pyplot as plt
5#接着将数据读取到程序中,并查看每个特征属性的相关信息,以便对“脏”数据进行处理
6datafile = 'data/air_data.csv'
7data = pd.read_csv(datafile, encoding='utf-8')
8print(data.shape)
9print(data.info())
  • 结果显示该数据集大小为(62988, 44),一共44列都无空值,不错,我们继续分析。

02

数据清洗

1#通过观测可知,数据集中存在票价为零但是飞行公里大于零的不合理值,但是所占比例较小,这里直接删去
2data = data[data["SUM_YR_1"].notnull() & data["SUM_YR_2"].notnull()]
3index1 = data["SUM_YR_1"] != 0
4index2 = data["SUM_YR_2"] != 0
5index3 = (data["SEG_KM_SUM"] == 0) & (data["avg_discount"] == 0)
6data = data[index1 | index2| index3]
7print(data.shape)
  • 删除后剩余的样本值是62044个,可见异常样本的比例不足1.5%,因此不会对分析结果产生较大的影响。

  • 原始数据集的特征属性太多,而且各属性不具有降维的特征,故这里选取几个对航空公司来说比较有价值的几个特征进行分析,这里并没有完全按照书中的做法选取特征,最终选取的特征是第一年总票价、第二年总票价、观测窗口总飞行公里数、飞行次数、平均乘机时间间隔、观察窗口内最大乘机间隔、入会时间、观测窗口的结束时间、平均折扣率这八个特征。下面说明这么选的理由:

  1. 选取的特征是第一年总票价、第二年总票价、观测窗口总飞行公里数是要计算平均飞行每公里的票价,因为对于航空公司来说并不是票价越高,飞行公里数越长越能创造利润,相反而是那些近距离的高等舱的客户创造更大的利益。

  2. 当然总飞行公里数、飞行次数也都是评价一个客户价值的重要的指标, 入会时间可以看出客户是不是老用户及忠诚度。

  3. 通过平均乘机时间间隔、观察窗口内最大乘机间隔可以判断客户的乘机频率是不是固定。

  4. 平均折扣率可以反映出客户给公里带来的利益,毕竟来说越是高价值的客户享用的折扣率越高。

1# 属性规约:去掉不相管的属性,只留下与LRFMC模型相关的属性
2# FFP_DATE 入会时间
3# LOAD_TIME 观测窗口结束时间
4# FLIGHT_COUNT 飞行频率
5# avg_discount 平均折扣
6# SEG_KM_SUM 观测窗口总飞行公里数
7# LAST_TO_END 最后一次乘机时间至观察窗口末端时长
8
9data = data[['FFP_DATE','LOAD_TIME', 'FLIGHT_COUNT', 'avg_discount', 'SEG_KM_SUM','LAST_TO_END']]
  • 数据变化的LRFMC数据:
    L = LOAD_TIME - FFP_DATE (观测窗口时间 - 入会时间)
    R = LOAD_TIME - LAST_TO_END (观测窗口时间 - 最后一次乘机时间)
    F = FLIGHT_COUNT
    M = SEG_KM_SUM

    C = avg_discount

 1from datetime import datetime2import time34def normal_time(date):5    '''6    格式化数据7    '''8    return datetime.strptime(date,"%Y/%m/%d")9
10def interval_time(dd):
11    '''
12    计算时间间隔,以月为单位
13    '''
14    return dd.days / 30
15# data_LRFMC数据
16data_LRFMC = pd.DataFrame()
17# data_LRFMC.columns = ['L', 'R', 'F','M', 'C']
18data["LOAD_TIME"] = pd.to_datetime(data["LOAD_TIME"])
19data["FFP_DATE"] = pd.to_datetime(data["FFP_DATE"])
20data_LRFMC['L'] = (data['LOAD_TIME'] - data['FFP_DATE']).astype(np.int64)
21data_LRFMC['R'] = pd.to_datetime(data['LAST_TO_END']).astype(np.int64)
22data_LRFMC['F'] = data['FLIGHT_COUNT']
23data_LRFMC['M'] = data['SEG_KM_SUM']
24data_LRFMC['C'] = data['avg_discount']
25
26# 显示数据的描述,最大值和最小值
27data_LRFMC_describe = data_LRFMC.describe().T
28data_LRFMC_describe = data_LRFMC_describe[['max','min']].T
29#注意到所有的数据值,最大值和最小值间隔较大,需要对数据进行标准化
30#这里使用标注差标准化,可以使用认识方法进行处理
31data_normal = (data_LRFMC - data_LRFMC.mean()) / (data_LRFMC.std())
32data_normal.columns = ['Z'+i for i in data_normal.columns]

03

建立模型

数据处理完毕,下面进行模型的构建,
1、使用聚类算法,将数据生成5类用户
2、针对聚类结果进行特征分析

 1k = 52kmodel = KMeans(k) #得到模型3kmodel.fit(data_normal) #训练模型45clu = kmodel.cluster_centers_6x = [1,2,3,4,5]78colors = ['red','green','yellow','blue','black']9for i in range(5):
10    plt.plot(x,clu[i],label='clustre '+str(i),linewidth=6-i,color=colors[i],marker='o')
11
12plt.xlabel('L  R  F  M  C')
13plt.ylabel('values')
14plt.show()

  • 客户价值分析:
    注意kmeans每次运行的时候得到的类会有差别,簇号也会相应的改变,但是中间点基本不会改变:
    L R F M C
    客户群1:[-0.70020646 -0.41488827 -0.16114258 -0.16095751 -0.25513154] red
    客户群2:[-0.31367829 1.68625847 -0.57401599 -0.53682019 -0.1733261] green
    客户群3:[ 0.48332845 -0.79938326 2.4832016 2.42472391 0.30863003] yellow
    客户群4:[ 1.16066672 -0.37722119 -0.08691852 -0.09484404 -0.1559046] blue
    客户群5:[ 0.05184279 -0.00266813 -0.22680311 -0.23125407 2.19134701] black

  • 我们重点关注的是L,F,M,从图中可以看到:
    1、客户群3[yellow] 的F,M很高,L也不低,可以看做是重要保持的客户;
    2、客户群5[black] 重要发展客户
    3、客户群4[blue] 重要挽留客户,原因:入会时间长,但是F,M较低
    4、客户群1[red] 一般客户
    5、客户群2[green] 低价值客户

04

数据集获取

  • 本项目是对《Python数据分析与挖掘》书中的航空公司客户价值分析案例进行复现

  • 需要数据集的可以公众号后台回复关键字【航空】获取

  • 另外小伙伴们点个“再看”支持下小姐姐吧,你的支持是我最大的动力呀

我不仅仅是一个码

实战 | 航空公司客户价值分析-LRFCM模型相关推荐

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

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

  2. python数据分析与挖掘实战(航空公司客户价值分析)

    一.引言 企业在面向客户制定运营策略.营销策略时,希望能够针对不同的客户推行不同的策略,实现精准化运营,以期获取最大的转化率.客户关系管理是精准化运营的基础,而客户关系管理的核心是客户分类.通过客户分 ...

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

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

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

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

  5. 数据分析实战:航空公司客户价值分析

    一.背景目标 通过对航空公司客户数据分析,对客户进行分类: 比较不同客户的客户价值,并制定不同的服务和营销策略 二.数据探索分析 2.1 数据概况 数据时间范围: 2012年4月1日至2014年3月3 ...

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

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

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

    1. 背景与挖掘目标 1.1 背景 企业营销焦点从产品中心转变为客户中心,客户关系管理成为企业的核心问题 客户关系管理的关键问题是客户分类,通过客户分类, 针对不同价值的客户制定优化的个性化服务方案, ...

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

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

  9. 基于机器学习的航空公司客户价值分析与流失预测

    温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / QQ 名片 :) 1. 项目背景 面对激烈的市场竞争,各个航空公司相继推出了更优惠的营销方式来吸引更多的客户,国内某航空公司面临着常旅 ...

  10. 航空公司客户价值分析(附完整代码)

    一.什么是客户价值分析:   客户价值分析是以客户为中心,从客户需求出发,搞清楚客户需要什么,他们有怎样的一个特征,需要什么样的产品,然后设计相应的产品,通过对客户分群从而满足客户的需求.进行客户价值 ...

最新文章

  1. java中decimalFormat格式化数值
  2. 读书笔记——《迁移到云原生架构》
  3. OPENSTACK重装系统失败导致虚拟机状态为error
  4. spark视频-Spark on Yarn
  5. websocket server client 编写
  6. clion远程调试linux内核,Clion + 树莓派/Ubuntu 远程调试
  7. 漫画:如何给女朋友解释什么是编译与反编译
  8. extjs的grid应用(java 使用json绑定数据 翻页)
  9. Microsoft Visual Studio .NET 2003 编译xvidcore-1.1.3
  10. Oracle Coherence:分布式数据管理
  11. PMP_模考三 (3A通过分享)(180题附答案及解析)
  12. 用python 把视频转换为图片
  13. matlab加特定频率的噪声,如何在Matlab/Simulink中生成指定的白噪声和有色噪声
  14. 定义范围中的备选方案生成、横向思维、创建WBS、工作包定义、WBS、确认范围过程和实施质量过程的关系、联合应用设计和质量功能展开QFD...
  15. HarmonyOS resources目录中“限定词目录”命名要求
  16. mysql中in的参数有限制_数据库 in 可以包含的参数个数
  17. peppa pig原版_Peppy和MooTools
  18. 《四海小记c++学习之路》第一阶段 基础
  19. 工业机器人国产替代,数字化转型是关键
  20. 臻识相机对接/华夏相机对接/千熠相机对接/海康相机对接

热门文章

  1. box-sizing 的使用
  2. 剖析Android shape标签的绘制
  3. tensorflow获取tensor的shape
  4. OCR文字识别方法对比
  5. c++求余弦的泰勒展开式
  6. php本地解密,PHPDecode 在线解密工具
  7. 6目摄像头照片球面投影变换拼接全景图片
  8. Air202学习 一 (程序下载流程----GPIO简单控制)
  9. 我还是很喜欢你,像风走了八千里,不问归期
  10. 图像特征——纹理特征