航空公司客户价值分析

挖掘目标

(1) 根据航空公司客户数据对客户进行分类。

(2) 对不同的客户类别进行特征分析,比价不同类客户的客户价值。

(3) 对不同价值的客户类别提供个性化服务,制定相应的营销策略。

这里写图片描述


分析方法与过程

识别客户价值应用最广泛的模型指标:最近消费时间间隔,消费频率,消费金额(RFM模型)。

本案例考虑项目指标(LRFMC模型):

(1) 客户关系长度L:航空公司会员时间的长短。

(2) 是消费时间间隔R。

(3) 消费频率F。

(4) 飞行里程M。

(5) 折扣系数的平均值C。

观测窗口:以过去某个时间段为结束时间,某一时间长度作为宽度,得到历史时间范围内的一个时间段。


LRFMC模型指标含义:

(1) L:会员入会时间距观测窗口结束的月数。

(2) R:客户最近一次乘坐公司飞机距离观测窗口结束的月数。

(3) F:客户在观测窗口内乘坐公司飞机的次数。

(4) M:客户在观测窗口内累计的飞行里程碑。

(5) C:客户在观测窗口内乘坐仓位所对应的折扣系数的平均值。


方法:本案例采用聚类的方法,通过对航空公司客户价值的LRFMC模型的五个指标进行K-Means聚类,识别客户价值。

总体流程:数据抽取->数据预处理(数据清洗(缺失值填补舍弃等),属性规约(提取需要特征数据),数据变换(转换适当格式))->建模->结果


CODE

1. 数据抽取

以2014-03-31为结束时间,选取宽度为两年的时间段为分析窗口,抽取观测窗口内有乘机记录的所有客户的详细数据形成历史数据。
抽取2012-04-01至2014-03-31所有乘客的详细数据,总共62988条,44个属性。

2. 数据探索分析

查找每列属性观测值个数,最大值,最小值。完整代码如下:

# 数据探索分析
import pandas as pd

datafile = 'eeeee/chapter7/demo/data/air_data.csv'
resultfile = 'eeeee/chapter7/demo/data/explore.xls'

data = pd.read_csv(datafile, encoding='utf-8')

explore = data.describe(percentiles=[], include='all').T
explore['null'] = len(data) - explore['count']

explore = explore[['null', 'max', 'min']]
explore.columns = [u'空值数', u'最大值', u'最小值']

explore.to_excel(resultfile)

3.数据预处理

数据清洗,属性规约,数据变换。

3.1数据清洗

通过数据探索分析,发现数据中存在缺失值,由于原始数据量大,这类数据量少,对其进行丢弃处理。
(1)丢弃票价为空的记录。
(2)丢弃票价为0、平均折扣率不为0、总飞行公里数等于0的记录。
满足清洗条件的一行数据全部丢弃,使用Pandas对满足清洗条件的数据进行丢弃。
完整代码如下:

# 数据清洗
cleanedfile = 'eeeee/chapter7/demo/data/data_cleaned.xls'

data = data[data['SUM_YR_1'].notnull()*data['SUM_YR_2'].notnull()]#保留票价非空的记录

index1 = data['SUM_YR_1'] != 0
index2 = data['SUM_YR_2'] != 0
index3 = (data['SEG_KM_SUM'] == 0) & (data['avg_discount'] == 0)# 只保留票价非0,或者平均折扣率与总飞行距离同时为0的记录

data = data[index1 | index2 | index3]# 或

data.to_excel(cleanedfile)

3.2属性规约

根据我们建立的LRFMC模型,提取这五个特征,删除语气不相关的属性。

3.3数据变换

将数据变换成‘适当的’格式。通过数据变换来构造这个五个特征。
计算方式如下:
(1) L=LOAD_TIME-FFP_DATE
会员入会时间距观测窗口结束的月数=观测窗口的结束时间-入会时间[单位:月]
(2) R=LAST_TO_END
客户最近一次乘坐公司飞机距观测窗口结束的月数=最后一次乘机时间至观测窗口末端时长[单位:月]
(3)F=FLIGHT_COUNT
客户在观测窗口内乘坐公司飞机的次数=观测窗口飞行次数[单位:次]
(4)M=SEG_KM_SUM
客户在观测时间内在公司累计的飞行里程=观测窗口的总飞行里数[单位:公里]
(5)C=AVG_DISCOUNT
客户在观测时间内乘坐舱位所对应的折扣系数的平均值=平均折扣率[单位:无]
提取5个特征后生成文件:zscoredata.xls

# 标准化
zfile = 'eeeee/chapter7/demo/data/zscoredata.xls'
zscoredfile = 'eeeee/chapter7/demo/data/zscoreddata.xls'

data1 = pd.read_excel(zfile)
data1 = (data1 - data1.mean(axis=0)) / (data1.std(axis=0))

data1.columns = ['Z'+i for i in data1.columns]

data1.to_excel(zscoredfile, index=False)

4.构建模型

客户价值分析模型包括两个:
(1) 根据5个特征对客户进行聚类分群。
(2) 对每个客户群进行特征分析,分析客户价值,并对每个客户进行排名。

# K-means聚类
from sklearn.cluster import KMeans

inputfile = 'eeeee/chapter7/demo/data/zscoreddata.xls'
k = 5

data2 = pd.read_excel(inputfile)

kmodel = KMeans(n_clusters=k, n_jobs=4)
kmodel.fit(data2)

kmodel.cluster_centers_
kmodel.labels_

客户价值分析:

根据聚类结果构造客户群特征分析图。
根据特征值大小总结出每个群体优势特征和弱势特征,将客户群分为四类:

a重要保持客户:平均折扣率高,乘坐次数或里程高,最近坐过本公司航班。

b重要发展客户:平均折扣率较高,乘坐次数和里程较低。

c重要挽留客户:平均折扣率,乘坐次数或者里程较高,较长时间没坐本公司航班。

d一般与低价值客户:折扣率低,较长时间未做本公司航班,乘坐次数或里程较低,入会时长短。

猜你喜欢

转载自blog.csdn.net/qq_40006058/article/details/80534573
今日推荐