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

无小意丶
个人博客地址:无小意
知乎主页:无小意丶
公众号: 数据路(shuju_lu)

刚刚开始写博客,希望能保持关注,会继续努力。
以数据相关为主,互联网为辅进行文章发布。

本文是《Python数据分析与挖掘实战》一书的实战部分,在整理分析后的复现。
本篇文章是本书第七章的实战:航空公司客户价值分析。
相关附件代码、数据和PDF,关注公众号“数据路”,回复:挖掘实战。
更好的观看体验,在线Jupyter notebook科赛平台,直接体验,点击这里

1.背景与挖掘目标

1.1背景

  1. 航空公司业务竞争激烈,从产品中心转化为客户中心。
  2. 针对不同类型客户,进行精准营销,实现利润最大化。
  3. 建立客户价值评估模型,进行客户分类,是解决问题的办法

1.2挖掘目标

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

详情数据见数据集内容中的air_data.csv和客户信息属性说明

2.分析方法与过程

2.1分析方法

  1. 首先,明确目标是客户价值识别。
  2. 识别客户价值,应用最广泛的模型是三个指标(消费时间间隔(Recency),消费频率(Frequency),消费金额(Monetary))
  3. 以上指标简称RFM模型,作用是识别高价值的客户
    • 消费金额,一般表示一段时间内,消费的总额。但是,因为航空票价收到距离和舱位等级的影响,同样金额对航空公司价值不同。
    • 因此,需要修改指标。选定变量,舱位因素=舱位所对应的折扣系数的平均值=C,距离因素=一定时间内积累的飞行里程=M。
    • 再考虑到,航空公司的会员系统,用户的入会时间长短能在一定程度上影响客户价值,所以增加指标L=入会时间长度=客户关系长度
    • 总共确定了五个指标,消费时间间隔R,客户关系长度L,消费频率F,飞行里程M和折扣系数的平均值C
    • 以上指标,作为航空公司识别客户价值指标,记为LRFMC模型
  4. 如果采用传统的RFM模型,如下图。它是依据,各个属性的平均值进行划分,但是,细分的客户群太多,精准营销的成本太高。
    Image Name
  5. 综上,这次案例,采用聚类的办法进行识别客户价值,以LRFMC模型为基础
  6. 本案例,总体流程如下图
    Image Name

2.2挖掘步骤

  1. 从航空公司,选择性抽取与新增数据抽取,形成历史数据和增量数据
  2. 对步骤一的两个数据,进行数据探索性分析和预处理,主要有缺失值与异常值的分析处理,属性规约、清洗和变换
  3. 利用步骤2中的已处理数据作为建模数据,基于旅客价值的LRFMC模型进行客户分群,对各个客户群再进行特征分析,识别有价值客户。
  4. 针对模型结果得到不同价值的客户,采用不同的营销手段,指定定制化的营销服务,或者针对性的优惠与关怀。(重点维护老客户)

2.3数据抽取

  1. 选取,2014-03-31为结束时间,选取宽度为两年的时间段,作为观测窗口,抽取观测窗口内所有客户的详细数据,形成历史数据
  2. 对于后续新增的客户信息,采用目前的时间作为重点,形成新增数据

2.4探索性分析

  1. 本案例的探索分析,主要对数据进行缺失值和异常值分析。
  2. 发现,存在票价为控制,折扣率为0,飞行公里数为0。票价为空值,可能是不存在飞行记录,其他空值可能是,飞机票来自于积分兑换等渠道,
  3. 查找每列属性观测值中空值的个数、最大值、最小值的代码如下。
import pandas as pd
datafile= r'/home/kesci/input/date27730/air_data.csv' #航空原始数据,第一行为属性标签
resultfile = r'/home/kesci/work/test.xls' #数据探索结果表
data = pd.read_csv(datafile, encoding = 'utf-8') #读取原始数据,指定UTF-8编码(需要用文本编辑器将数据装换为UTF-8编码)
explore = data.describe(percentiles = [], include = 'all').T #包括对数据的基本描述,percentiles参数是指定计算多少的分位数表(如1/4分位数、中位数等);T是转置,转置后更方便查阅
print(explore)
explore['null'] = len(data)-explore['count'] #describe()函数自动计算非空值数,需要手动计算空值数
explore = explore[['null', 'max', 'min']]
explore.columns = [u'空值数', u'最大值', u'最小值'] #表头重命名
print('-----------------------------------------------------------------以下是处理后数据')
print(explore)
'''这里只选取部分探索结果。
describe()函数自动计算的字段有count(非空值数)、unique(唯一值数)、top(频数最高者)、freq(最高频数)、mean(平均值)、std(方差)、min(最小值)、50%(中位数)、max(最大值)'''

-----------------------------------------------------------------以下是处理前数据
count unique top freq mean std
MEMBER_NO 62988 NaN NaN NaN 31494.5 18183.2
FFP_DATE
  • 10
    点赞
  • 176
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
层次聚类算法(Hierarchical Clustering)是一种将数据集中的对象进行分组的无监督学习算法,其基本思想是将数据集中的对象逐步合并成越来越大的类群,直到满足某个停止准则为止。层次聚类算法可以分为两类:自下而上的凝聚层次聚类和自上而下的分裂层次聚类。 航空公司客户价值分析的层次聚类算法可以通过以下步骤实现: 1. 数据预处理:首先需要对客户数据进行清洗和处理,包括数据去重、缺失值处理、异常值处理等。 2. 特征选择:选择能够反映客户价值的关键特征,比如客户的航班消费金额、航班消费频率、航班消费时间等。 3. 距离度量:选择一种距离度量方法,比如欧氏距离、曼哈顿距离、闵可夫斯基距离等。 4. 层次聚类:使用层次聚类算法客户进行分组。可以选择自下而上的凝聚层次聚类,通过计算每个客户之间的距离,逐步将距离最近的客户合并成一类;也可以选择自上而下的分裂层次聚类,通过将所有客户看成一个类,逐步将类分裂成越来越小的子类。 5. 分组结果分析:根据聚类结果,可以对客户进行分组,分析每个组的客户价值、消费特点等,为航空公司提供客户分层管理、精准营销等决策支持。 需要注意的是,层次聚类算法是一种启发式算法,结果可能会受到数据特征、距离度量等因素的影响,因此在实际应用中需要综合考虑多种算法和参数组合,选择最优的聚类结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值