利用K-Means聚类进行航空公司客户价值分析.doc

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

利用 K-Means 聚类进行航空公司客户价值分析

1.背景与挖掘目标 1.1 背景航空公司业务竞争激烈,从

产品中心转化为客户中心。针对不同类型客户,进行精准营

销,实现利润最大化。建立客户价值评估模型,进行客户分

类,是解决问题的办法 1.2 挖掘目标借助航空公司客户数据,对客户进行分类。对不同的客户类别进行特征分析,比较不

同类客户的客户价值对不同价值的客户类别提供个性化服

务,制定相应的营销策略。详情数据见数据集内容中的

air_data.csv 和客户信息属性说明 2.分析方法与过程 2.1 分析方法首先,明确目标是客户价值识别。识别客户价值,应用

最广泛的模型是三个指标(消费时间间隔(Recency) ,消费

频率( Frequency),消费金额( Monetary ))以上指标简称RFM 模型,作用是识别高价值的客户消费金额,一般表示一段时

间内,消费的总额。但是,因为航空票价收到距离和舱位等

级的影响,同样金额对航空公司价值不同。因此,需要修改

指标。选定变量,舱位因素=舱位所对应的折扣系数的平均

值=C,距离因素 =一定时间内积累的飞行里程 =M 。再考虑到,航空公司的会员系统,用户的入会时间长短能在一定程度上

影响客户价值,所以增加指标 L= 入会时间长度 =客户关系长度总共确定了五个指标,消费时间间隔 R,客户关系长度 L ,消费频率 F,飞行里程 M 和折扣系数的平均值 C 以上指标,

作为航空公司识别客户价值指标,记为LRFMC 模型如果采用传统的 RFM 模型,如下图。它是依据,各个属性的平均

值进行划分,但是,细分的客户群太多,精准营销的成本太

高。

综上,这次案例,采用聚类的办法进行识别客户价值,以LRFMC 模型为基础本案例,总体流程如下图

2.2 挖掘步骤从航空公司,选择性抽取与新增数据抽取,形

成历史数据和增量数据对步骤一的两个数据,进行数据探索

性分析和预处理,主要有缺失值与异常值的分析处理,属性

规约、清洗和变换利用步骤 2 中的已处理数据作为建模数据,

基于旅客价值的 LRFMC 模型进行客户分群,对各个客户群再

进行特征分析,识别有价值客户。针对模型结果得到不同

价值的客户,采用不同的营销手段,指定定制化的营销服务,或者针对性的优惠与关怀。(重点维护老客户) 2.3 数据抽取选取, 2014-03-31 为结束时间,选取宽度为两年的时间段,作为观测窗口,抽取观测窗口内所有客户的详细数据,形成

历史数据对于后续新增的客户信息,采用目前的时间作为重

点,形成新增数据 2.4 探索性分析本案例的探索分析,主要对

数据进行缺失值和异常值分析。发现,存在票价为控制,折扣

率为 0,飞行公里数为 0。票价为空值,可能是不存在飞行记录,其他空值可能是,飞机票来自于积分兑换等渠道,查找

每列属性观测值中空值的个数、最大值、最小值的代码

如下。 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 62988 3068 2011/01/13

184 NaN NaN

FIRST_FLIGHT_DATE 62988 3406 2013/02/16

96 NaN NaN

GENDER 62985 2

男48134 NaN NaN

FFP_TIER 62988 NaN NaN

NaN 4.10216 0.373856

WORK_CITY 60719 3310 广州9385 NaN NaN

WORK_PROVINCE 59740 1185

广东17507 NaN NaN

WORK_COUNTRY 62962 118

相关文档
最新文档