[让我看看]目录

  • 前言
  • 学习目标
  • 1.了解航空公司现状与客户价值分析
    • 任务描述与分析
    • 1.1 了解航空公司现状
      • 1.1.1航空公司数据特征说明
    • 1.2了解客户价值分析
    • 1.3 熟悉航空客户价值分析的步骤与流程
  • 2.预处理航空客户数据
    • 任务描述与分析
    • 2.1处理数据缺失值与异常值
    • 2.2构建航空客户价值分析关键特征
    • 2.3 标准化LRFMC五个特征
    • 2.4任务实现
  • 3.使用K-Means算法进行客户分群
    • 任务描述与分析
    • 3.1 了解K-Means聚类算法
    • 3.2 分析聚类结果
    • 3.3模型应用
    • 3.4 任务实现
  • 小结

前言

信息时代的来临使得企业营销焦点从产品转向了客户,客户关系管理(Customer relationship management ,CRM)成为企业的核心问题。客户关系管理的关键问题是客户分群。通过客户分群,区分无价值客户和高价值客户。企业针对不同价值的客户定制优化的个性化服务方案,采取不同营销策略,将有限营销资源集中于高价值客户,实现企业例利润最大化目标。准确的客户分群结果是企业优化营销资源分配的重要依据,客户分群越来越成为客户关系管理中亟待解决的关键问题之一。下面将使用航空公司客户数据,结合RFM模型,采用K-Means聚类算法,对客户进行分群,比较不同类别客户的客户价值,从而指定相应的营销策略。

学习目标

(1) 熟悉航空客户价值分析的步骤和流程
(2) 了解RFM模型的基本原理
(3) 掌握K-Means 算法的基本原理与使用方法.
(4) 比较不同类别客户的客户价值,制定相应的营销策略+

1.了解航空公司现状与客户价值分析

任务描述与分析

任务描述

面对激烈的市场竞争,各个航空公司都推出了更多的优惠来吸引客户。国内某航空公司面临着常旅客流失,竞争力下降和资源未充分利用等经营危机。通过建立合理的客户价值评估模型,对客户进行分群,分析及比较不同客户群的客户价值,并制定相应的营销策略,对不同的客户群提供个性化服务。

任务分析
(1)了解航空公司现状
(2)认识客户价值分析
(3) 熟悉航空公司客户价值分析的步骤与流程

1.1 了解航空公司现状

行业内竞争
民航的竞争除了三大航空公司之间的竞争之外,还将加入新崛起的各类小型航空公司、民营航空公司,甚至国外航空巨头。航空产品生产过剩,产品同质化特征愈加明显,于是航空公司从价格、服务间的竞争逐渐转向对客户的竞争。
行业外竞争
随着高铁、动车等铁路运输的兴建,航空公司受到巨大冲击。

1.1.1航空公司数据特征说明

目前航空公司已积累了大量的会员档案信息和其乘坐航班记录。
以2014-03-31为结束时间,选取宽度为两年的时间段作为分析观测窗口,抽取观测窗口内有乘机记录的所有客户的详细数据形成历史数据,44个特征,总共62988条记录。数据特征及其说明如右表所示。


项目目标

结合目前航空公司的数据情况,可以实现以下目标。

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

1.2了解客户价值分析

客户营销战略倡导者Jay & Adam Curry从国外数百家公司进行了客户营销实施的经验中提炼了如下经验。

(1)公司收入的80%来自顶端的20%的客户。
(2)20%的客户其利润率100%。
(3)90%以上的收入来自现有客户。
(4)大部分的营销预算经常被用在非现有客户上。
(5)5%至30%的客户在客户金字塔中具有升级潜力。
(6)客户金字塔中客户升级2%,意味着销售收入增加10%,利润增加50%。
这些经验也许并不完全准确,但是它揭示了新时代客户分化的趋势,也说明了对客户价值分析的迫切性和必要性。

1.3 熟悉航空客户价值分析的步骤与流程

航空客户价值分析项目的总体流程如图7-1所示.主要包括以下4个步骤
(1)抽取航空公司2012年4月1日至2014年3月31日的数据
(2)对抽取的数据进行数据清洗,特征构建和标准化等操作
(3)基于RFM模型,使用K-means算法进行客户分群
(4)针对模型结果得到不同价值的客户,采用不同的营销手段,提供定制化的服务

2.预处理航空客户数据

任务描述与分析

任务描述
航空公司客户原始数据存在少量的缺失值和异常值,需要清洗后才能用于分析。同时由于原始数据的特征过多,不便直接用于客户价值分析,因此需要对特征进行刷选,挑选出衡量客户价值的关键特征

任务分析
(1)处理数据缺失值与异常值
(2)结合RFM模型刷选特征
(3)标准化刷选后的数据

2.1处理数据缺失值与异常值

通过对数据观察发现原始数据中存在票价为空值,票价最小值为0,折扣率最小值为0,总飞行公里数大于0的记录。票价为空值的数据可能是客户不存在乘机记录造成。
处理方法:丢弃票价为空的记录。
其他的数据可能是客户乘坐0折机票或者积分兑换造成。由于原始数据量大,这类数据所占比例较小,对于问题影响不大,因此对其进行丢弃处理。
处理方法:保留票价非0,或者平均折扣率不为0且总飞行公里数大于0的记录。

2.2构建航空客户价值分析关键特征

1. RFM模型介绍
本项目的目标是客户价值分析,即通过航空公司客户数据识别不同价值的客户,识别客户价值应用最广泛的模型是RFM模型。
R(Recency)指的是最近一次消费时间与截止时间的间隔。通常情况下,最近一次消费时间与截止时间的间隔越短,对即时提供的商品或是服务也最有可能感兴趣。
F(Frequency)指顾客在某段时间内所消费的次数。可以说消费频率越高的顾客,也是满意度越高的顾客,其忠诚度也就越高,顾客价值也就越大。
M(Monetary)指顾客在某段时间内所消费的金额。消费金额越大的顾客,他们的消费能力自然也就越大,这就是所谓“20%的顾客贡献了80%的销售额”的二八法则。

2. RFM模型结果解读
RFM模型包括三个特征,使用三维坐标系进行展示,如图所示。X轴表示Recency,Y轴表示Frequency,Z轴表示Monetary,每个轴一般会分成5级表示程度,1为最小,5为最大。

3. 传统RFM模型在航空行业的缺陷

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

4. 航空客户价值分析的LRFMC模型

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

2.3 标准化LRFMC五个特征

完成五个特征的构建以后,对每个特征数据分布情况进行分析,其数据的取值范围如表所示。从表中数据可以发现,五个特征的取值范围数据差异较大,为了消除数量级数据带来的影响,需要对数据做标准化处理。


L、R、F、M和C五个特征的数据示例,上图为原始数据,下图为标准差标准化处理后的数据


2.4任务实现

import numpy as np
import pandas as pd
air_data = pd.read_csv("./air_data.csv",encoding = "gb18030")
print('原始数据的形状为:',air_data.shape)

# 丢失的数据的数目及其丢失的比率
total = air_data.isnull().sum().sort_values(ascending=False)
percent = (air_data.isnull().sum()/air_data.count()).sort_values(ascending=False)
missing_data = pd.concat([total,percent],axis = 1,keys = ['Total','Percent'])
missing_data.head(10)

# 去掉票价为空的记录
exp1 = air_data['SUM_YR_1'].notnull()
exp2 = air_data['SUM_YR_2'].notnull()
exp = exp1 & exp2
air_notnull = air_data.loc[exp,:]
print('删除缺失记录后数据的形状: ',air_notnull.shape)

只保留票价非零的 , 或者平均折扣率不为0 且总飞行公里数大于0的记录

# 只保留票价非零的 , 或者平均折扣率不为0 且总飞行公里数大于0的记录
index1 = air_notnull['SUM_YR_1'] != 0
index2 = air_notnull['SUM_YR_2'] != 0
index3 = (air_notnull['SEG_KM_SUM']> 0) & (air_notnull['avg_discount'] != 0)
airline = air_notnull[(index1 | index2) & index3]
print('删除异常记录后数据的形状为: ', airline.shape)

选取需求特征

# 选取需求特征
airline_selection = airline[['FFP_DATE','LOAD_TIME','FLIGHT_COUNT','LAST_TO_END','avg_discount','SEG_KM_SUM']]

#构建L特征

#构建L特征
L = pd.to_datetime(airline_selection['LOAD_TIME']) - pd.to_datetime(airline_selection['FFP_DATE'])
# astype()函数可用于转化dateframe某一列的数据类型
L = L.astype('str').str.split().str[0]
L = L.astype('int')/30

3 . 标准化LRFMC模型的特征
由于聚类模型并不需要划分数据集为训练集和测试集,标准化可以
使用sklearn的preprocessing模块,也可以使用自定义函数的方法实现

#合并特征
#iloc 索引中的特定位置获取行(或列) 这里选取所有行,0,1,2,即第3列后面的
airline_features = pd.concat([L,airline_selection.iloc[:,2:]],axis = 1)
print('构建的LRFMC特征前5行为: \n',airline_features.head())

3.使用K-Means算法进行客户分群

任务描述与分析

任务描述

聚类模型的用途非常广泛,从用户画像到客户价值分析,均有其身影。K-Means算法是一种最常用的聚类算法,简单易行且使用于中大型数据量的数据聚类。本任务将使用K-Means算法进行航空公司用户分群,最终得到不同特征的客户群,并分析不同客户群的特征,指定相对应的策略。

任务分析

(1)了解K-Means算法的基本原理
(2) 使用K-Means算法对航空客户进行分群
(3) 根据分群结果制定营销策略

3.1 了解K-Means聚类算法

  1. 基本概念

K-Means聚类算法是一种基于质心的划分方法,输入聚类个数k,以及包含n个数据对象的数据库,输出满足误差平方和最小标准的k个聚类。算法步骤如下。
(1)从n个样本数据中随机选取k个对象作为初始的聚类中心。
(2)分别计算每个样本到各个聚类质心的距离,将样本分配到距离最近的那个聚类中心类别中。
(3)所有样本分配完成后,重新计算k个聚类的中心。
(4)与前一次计算得到的k个聚类中心比较,如果聚类中心发生变化,转(2),否则转(5)。
(5)当质心不发生变化时停止并输出聚类结果。

  1. 数据类型

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

  1. kmeans函数及其参数介绍

sklearn的cluster模块提供了KMeans函数构建K-Means聚类模型,其基本语法如下。
sklearn.cluster.KMeans(n_clusters=8, init=‘k-means++’, n_init=10, max_iter=300, tol=0.0001,precompute_distances=‘auto’, verbose=0, random_state=None, copy_x=True, n_jobs=1,algorithm=‘auto’)
常用参数及其说明如表所示。


K-Means模型构建完成后可以通过属性查看不同的信息,如表所示。

对数据进行聚类分群的结果如表所示。

针对聚类结果进行特征分析,如图所示。

3.2 分析聚类结果

结合业务分析,通过比较各个特征在群间的大小对某一个群的特征进行评价分析,从而总结出每个群的优势和弱势特征,具体结果如表所示。

基于特征描述,本项目定义五个等级的客户类别:重要保持客户,重要发展客户,重要挽留客户,一般客户,低价值客户。每种客户类别的特征如图所示。

3.3模型应用

根据对各个客户群进行特征分析,采取下面的一些营销手段和策略,为航空公司的价值客户群管理提供参考。

1 会员的升级与保级:航空公司可以在对会员升级或保级进行评价的时间点之前,对那些接近但尚未达到要求的较高消费客户进行适当提醒甚至采取一些促销活动,刺激他们通过消费达到相应标准。这样既可以获得收益,同时也提高了客户的满意度,增加了公司的精英会员。

2 首次兑换:采取的措施是从数据库中提取出接近但尚未达到首次兑换标准的会员,对他们进行提醒或促销,使他们通过消费达到标准。一旦实现了首次兑换,客户在本公司进行再次消费兑换就比在其他公司进行兑换要容易许多,在一定程度上等于提高了转移的成本。

3 交叉销售:通过发行联名卡等与非航空类企业的合作,使客户在其他企业的消费过程中获得本公司的积分,增强与公司的联系,提高他们的忠诚度。

3.4 任务实现

导入包

from sklearn.cluster import KMeans   #导入kmeans算法
k = 5  #确认聚类中心数
# airline_scale = np.load('./airline_scale.npz')['arr_0']
# 构建模型
kmeans_model = KMeans(n_clusters = k,n_jobs = 4,random_state=123)
fit_kmeans = kmeans_model.fit(data)     #模型训练

查看聚类中心

kmeans_model.cluster_centers_


统计不同类别样本的数目

pd.Series(kmeans_model.labels_).value_counts()

result = pd.DataFrame(kmeans_model.cluster_centers_)
result.columns = ['L','R','F','M','C']
num = pd.DataFrame({'聚类个数':[4242,12114,5337,24618,15733]})
leibie = pd.DataFrame({'聚类类别':['客户群5','客户群3','客户群1','客户群4','客户群2']})
#  axis = 0, 表示在水平方向(row)进行连接 axis = 1,
# 表示在垂直方向(column)进行连接
kmeans_result = pd.concat([leibie,num,result],axis = 1)
kmeans_result


客户聚类结果特征展示画图的代码

import matplotlib.pyplot as plt
import math
import matplotlib.colors as mcolors
# 导入中文
import matplotlib.font_manager as font_managerfont_dirs = ['./font']
font_files = font_manager.findSystemFonts(fontpaths=font_dirs)
font_list = font_manager.createFontList(font_files)
font_manager.fontManager.ttflist.extend(font_list)
plt.rcParams['font.family'] = 'SimHei'# 启用主题
plt.style.use('ggplot')# 获取极径范围
def get_range(data_list):max = min = 0for _, data in data_list.items():for v in data:if v < min:min = vif v > max:max = vreturn [min, max]# 生成能力分布图
def generate_ability_map(abilities, data_list, rows=3):min, max = get_range(data_list)# 根据能力项等分圆angles = np.linspace(0, 2 * np.pi, len(abilities), endpoint=False)angles = np.append(angles, angles[0])# 生成n个子图fg, axes = plt.subplots(math.ceil(len(data_list) / rows), rows, subplot_kw=dict(polar=True),figsize=(9,9))# 调整子图间距plt.subplots_adjust(wspace =0.6, hspace =0.6)# 打散为一维数组axes = axes.ravel()# 获取所有支持的颜色colors = list(mcolors.TABLEAU_COLORS)# 循环绘制i = 0for name, data in data_list.items():data = np.append(np.array(data), data[0])ax = axes[i]# 绘制线条ax.plot(angles, data, color=colors[i])# 填充颜色ax.fill(angles, data, alpha=0.7, color=colors[i])# 设置角度ax.set_xticks(angles)# 设置坐标轴名称ax.set_xticklabels(abilities)# 设置名称ax.set_title(name, size=10, color='black', position=(0.5, 0.4))# 设置极径最小值ax.set_rmin(min)# 设置极径最大值(最大值加0.1,要不线条最外圈线显示不完全)ax.set_rmax(max + 0.1)i = i + 1plt.show()

调用上面函数进行画图展示

RFM_index = list(kmeans_result.columns[1:])  #  取索引名字 并将其转化为列表形式
RFM_result = {'客户群5':list(kmeans_result.loc[0][2:]),'客户群3':list(kmeans_result.loc[1][2:]),'客户群1':list(kmeans_result.loc[2][2:]),'客户群4':list(kmeans_result.loc[3][2:]),'客户群2':list(kmeans_result.loc[4][2:])}#画图
generate_ability_map(RFM_index,RFM_result)


小结

本项目结合航空公司客户价值分析的案例,重点介绍了数据分析算法中K-Means聚类算法在客户价值分析中的应用。针对RFM客户价值分析模型的不足,使用K-Means算法构建了航空客户价值分析LRFMC模型,详细描述了数据分析的整个过程。

python实践项目 航空公司客户价值分析相关推荐

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

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

  2. python航空公司客户价值分析

    1.航空公司部分数据特征说明及LRFMC模型介绍及K-Means聚类算法介绍 2.开始数据分析 - 数据探索 Part Ⅰ:数据预处理 数据清洗 数据集成 数据归约 数据变换 Part Ⅱ:建模分析和 ...

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. msf如何升级_Kali linux 2016.2(Rolling)中的Metasploit如何更新与目录结构初步认识...
  2. 计算机专业做产品,非计算机专业如何做产品经理?
  3. python opencv 实现从一个文件夹中读取图片做切割处理后放入另一个文件夹
  4. 最全面计算机英语单词列表(一)
  5. 免费得了一套做自媒体教程,免费分享给大家
  6. 手把手教你用Python网络爬虫获取壁纸图片!
  7. Linu基本知识(二)——Linux系统以及相关命令
  8. 计算机科学博士点,全国计算机博士点排名(全国前70名)
  9. 双系统基础上装三系统教程
  10. mqtt publish 中文
  11. 创新、创业,风险投资介绍。附:2019年热门风险投资人 ( VCPE )
  12. Linux 驱动程序 USB控制
  13. 代码质量管理sonarqube部署使用
  14. bzoj 3620: 似乎在梦中见过的样子 kmp算法+暴力
  15. 时间序列预测02:经典方法综述 自回归ARIMA/SRIMA 指数平滑法等
  16. H5页面底部前进、后退横栏怎么去除?
  17. C#与.NET程序员面试宝典 封皮(非常重要的图)
  18. 心理学:人与人之间的相处之道,说白了就这四个字
  19. TCP/IP详解卷一之广播和本地组播(IGMP和MLD)
  20. Javaweb实验: JSP与Servlet综合案例(含完整代码)

热门文章

  1. 报表系统服务器故障,报表服务器服务启动时的错误消息 - SQL Server | Microsoft Docs...
  2. Delphi下使用并口控制打印机的方法
  3. kvm usb键盘 linux,KVM USB打印机共享器81UA连接使用教程
  4. 醉上清新年中工作总结汇报模板免费下载_PPTX图片设计素材_包图网888pic.com
  5. Apache Ranger KMS 部署文档
  6. 四象限里的正弦、余弦和正切(四象限反正切函数的原理)
  7. Java IO(非常详细)
  8. 浅谈vue 动态加载、注册组件
  9. 计算机控制液位控制系统,计算机控制系统的液位流量串级控制系统设计
  10. 5步完成物联网小程序开发