航空公司客户价值分析---机器学习
作者:互联网
航空公司客户价值分析
1、了解航空公司现状与客户价值分析
- 1、行业内竞争
- 民航的竞争除了三大航空公司之间的竞争之外,还将加入新崛起的各类小型航空公司、民营航空公司,甚至国外航空巨头。航空产品生产过剩,产品同质化特征愈加明显,于是航空公司从价格、服务间的竞争逐渐转向对客户的竞争。
- 2、行业外竞争
- 随着高铁、动车等铁路运输的兴建,航空公司收到巨大冲击。
1.1、根据航空公司的数据特征进行下列说明:
1.2、结合目前航空公司的数据情况,可以实现以下目标:
- a、借助航空公司客户数据,对客户进行分群。
- b、对不同的客户类别进行特征分析,比较不同类别客户的客户价值。
- c、对不同价值的客户类别提供个性化服务,制定相应的营销策略。
1.3、认识客户价值分析
全球经济环境和市场环境已经悄然改变,企业的业务逐步从以产品为主导转向以客户需 求为主导。一种全新的“以客户为中心”的业务模式正在形成并被提升到前所未有的高度。 然而与客户保持关系需要花费成本,企业所拥有的客户中只有一部分能为企业带来利润。企 业的资源也是有限的,忽视高潜力的客户而对所有客户都提供同样的服务,将使企业的资源 无法发挥其最大效用去创造最大化的利润。任何企业要想生存和发展,都必须获得利润,追 求利润最大化是企业生存和发展的宗旨之一。所以企业不可能也不应该和所有的客户都保持 同样的关系。客户营销战略的倡导者 Jay& Adam Curry 从对国外数百家公司进行的客户营销 实施的经验中提炼了如下经验:
- a、公司收入的 80%来自顶端的 20%的客户。
- b、20%的客户其利润率为 100%。
- c、90%以上的收入来自现有客户。
- d、大部分的营销预算经常被用在非现有客户上。
- e、5%~30%的客户在客户金字塔中具有升级潜力。
- f、客户金字塔中的客户升级 2%,意味着销售收入增加 10%,利润增加 50。
众多的企业管理者虽然知道客户价值分析的重要性,但对如何进行客户价值分析却知之 甚少。如何全方位、多角度地考虑客户价值因素,进行有效的客户价值分析,这是摆在所有 企业面前需要认真思索的一个问题。
只有甄选出有价值的客户并将精力集中在这些客户身上, 才能有效地提升企业的竞争力,使企业获得更大的发展。 在客户价值分析领域,最具影响力并得到实证检验的理论与模型有客户终生价值理论客 户价值金字塔模型、策略评估矩阵分析法和 RFM 客户价值分析模型等。本章将运用改进的客 户价值 RFM 模型进行分析。
1.4、了解航空公司的客户价值分析的步骤流程
1.5、客户价值分析大概流程
- 1、抽取航空公司 2012 年 4 月 1 日至 2014 年
- 2、对抽取的数据进行数据清洗、特征构建和标准化等操作。
- 3、基于 RFM 模型,使用 K-Means 算法进行客户分群
- 4、针对模型结果得到不同价值的客户,采用不同的营销手段,提供定制化的服务。
2、航空公司客户数据处理
2.1、观察数据
航空公司客户原始数据存在少量的缺失值和异常值,需要清洗后才能用于分析。同时由 于原始数据的特征过多,不便直接用于客户价值分析,因此需要对特征进行筛选,挑选出衡量客户价值的关键特征。
2.2、数据如何处理?
- 处理数据缺失值与异常值
通过对 数据观察 发现原始数据中存在票价为空值、票价最小值为 0、折扣率最小值为 0 总飞行千米数大于 0 的记录。票价为空值的数据可能是由于不存在乘机记录造成的。其他的 数据可能是由于客户乘坐 0 折机票或者积分兑换造成的。由于原始数据量大,这类数所占比 例较小,对问题影响不大,因此对其进行丢弃处理。具体处理方法如下:
- a、丢弃票价为空的记录。
- b、丢弃票价为 0、平均折扣率不为 0、总飞行千米数大于 0
# 导入工具包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# 加载数据
def load_data():
air_data = pd.read_csv('../datas/air_data.csv',encoding = 'ansi')
return air_data
# 数据处理
def deal_data(air_data):
airline_data = pd.read_csv("../datas/air_data.csv",
encoding="gb18030") # 导入航空数据
print('原始数据的形状为:', airline_data.shape)
## 去除票价为空的记录
# exp1与exp2都为True的数据项,exp置为True
# 信号值 :exp1、exp2、exp
exp1 = airline_data["SUM_YR_1"].notnull()
exp2 = airline_data["SUM_YR_2"].notnull()
exp = exp1 & exp2
airline_notnull = airline_data.loc[exp, :]
print('删除缺失记录后数据的形状为:', airline_notnull.shape)
# 只保留票价非零的,或者平均折扣率不为0且总飞行公里数大于0的记录。
index1 = airline_notnull['SUM_YR_1'] != 0
index2 = airline_notnull['SUM_YR_2'] != 0
index3 = (airline_notnull['SEG_KM_SUM'] > 0) & (airline_notnull['avg_discount'] != 0)
airline = airline_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 = pd.to_datetime(airline_selection["LOAD_TIME"]) - pd.to_datetime(airline_selection["FFP_DATE"])
L = L.astype("str").str.split().str[0] # 去除数据中的days字符,只输出数字,再转化为数值型数据
L = L.astype("int") / 30
## 合并特征
airline_features = pd.concat([L,
airline_selection.iloc[:, 2:]], axis=1)
print('构建的LRFMC特征前5行为:\n', airline_features.head())
# .preprocessing 预处理与归一化 数据
from sklearn.preprocessing import StandardScaler
data = StandardScaler().fit_transform(airline_features)
np.savez('../datas/airline_scale_test1.npz', data)
print('标准化后LRFMC五个特征为:\n', data[:5, :])
return data
(2)、航空客户价值分析的 LRFMC 模型--构建LRFMC特征
提取特征值是有一列:L --->会员入会时间和窗口结束之间的月数
- 转化为时间数据,时间相减,就可以构建 L 列特征值
# 选取需求特征
airline_selection = airline[["FFP_DATE", "LOAD_TIME",
"FLIGHT_COUNT", "LAST_TO_END",
"avg_discount", "SEG_KM_SUM"]]
# 构建L特征
L = pd.to_datetime(airline_selection["LOAD_TIME"]) - pd.to_datetime(airline_selection["FFP_DATE"])
L = L.astype("str").str.split().str[0] # 去除数据中的days字符,只输出数字,再转化为数值型数据
L = L.astype("int") / 30
## 合并特征
airline_features = pd.concat([L,
airline_selection.iloc[:, 2:]], axis=1)
print('构建的LRFMC特征前5行为:\n', airline_features.head())
(3)、标准化数据----->标准差标准化数据
# .preprocessing 预处理与归一化 数据
from sklearn.preprocessing import StandardScaler
data = StandardScaler().fit_transform(airline_features)
np.savez('../datas/airline_scale_test1.npz', data)
print('标准化后LRFMC五个特征为:\n', data[:5, :])
return data# 返回处理好的特征值数据框
3、K-Means————算法预测
- 实例化对象
- 训练数据
- 预测
- 获取聚类后的最终簇的类别及个数
# 5、算法预测K-Means
# 1、实例化对象
#n_clusters = 5指的是分为五个簇
km = KMeans(n_clusters = 5,init = 'k-means++')
# 2、训练数据
km.fit(air_data)
# 3、预测
y_pre = km.predict(air_data)
# 4、获取最终的聚类中心
centers = km.cluster_centers_
print('y_pre:\n', y_pre) # 输出预测值
print('centers:\n', centers)
4、绘制雷达图
def show_plt(data):
"""
绘制雷达图,来展示结果
:param centers: 各个类别的聚类中心
:return: None
"""
# 1、创建画布
plt.figure()
# 支持中文,支持负号:
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
#绘制雷达图
datalength = data.shape[1]
# 构建角度
# 从0~2π生成五个代表 特征值 的角度
angle = np.linspace(0,2 * np.pi , datalength,endpoint = False)
# 闭合角度
angle = np.concatenate((angle,[angle[0]]),axis = 0)
print('五个特征值之间的角度为:\n')
print('angle:\n',angle)
# 将绘的图中的 尾部闭合 构成 回路图
centers = np.concatenate((data,data[:,0:1]),axis=1)
for i in range(centers.shape[0]):
data1 = centers[i, :]
print('data1:\n',data1)
plt.polar(angle,data1)
# 添加标题
plt.title('航空公司客户聚类结果')
# 修改刻度
plt.xticks(angle[:-1], ['L', 'R', 'F', 'M', 'C'])
# 添加图例
plt.legend(['第一类客户', '第二类客户', '第三类客户', '第四类客户', '第五类客户'], loc=0)
# 保存
plt.savefig('../datas/航空公司客户聚类结果test1.png')
# 3、保存及展示
plt.show()
雷达图展示:
5、主函数
def main():
"""
主函数:程序的入口
:return:
"""
# 1、加载数据
air_data = load_data()
print("原始的数据形状是:\n", air_data)
# 处理数据
air_data = deal_data(air_data)
print("处理好的数据是:\n", air_data)
print("处理好的数据形状是:\n", air_data.shape)
# 5、算法预测K-Means
# (1)实例化对象
# n_clusters = 5指的是分为五个簇
km = KMeans(n_clusters=5, init='k-means++')
# 2、训练数据
km.fit(air_data)
# 3、预测
y_pre = km.predict(air_data)
# # 获取最终的聚类中心
centers = km.cluster_centers_
print('y_pre:\n', y_pre) # 输出聚类中簇的分类以及个数
print('centers:\n', centers)
# 4、绘制雷达图及修饰
show_plt(centers)
if __name__ == '__main__':
main() # 启动
聚类结果分析:
6、模型应用
根据对各个客户群进行特征分析,采取下面的一些营销手段和策略,为航空公司的价值 客户群管理提供参考:
- 1、会员的升级与保级
- 航空公司的会员可以分为白金卡会员、金卡会员、银卡会员和普通卡会员,其中非普通 卡会员可以统称为航空公司的精英会员。虽然各个航空公司都有自己的特点和规定,但会员 制的管理方法是大同小异的。成为精英会员一般都是要求在一定时间内(如一年)积累一定的 飞行里程或航段,达到这种要求后就会在有效期内(通常为两年)成为精英会员,并享受相应 的高级别服务。有效期快结束时,根据相关评价方法确定客户是否有资格继续作为精英会员, 然后对该客户进行相应的升级或降级。
- 然而,由于许多客户并没有意识到或根本不了解会员升级或保级的时间与要求(相关的 文件说明往往复杂且不易理解),经常在评价期过后才发现自己其实只差一点就可以实现升 级或保级,却错过了机会,使之前的里程积累白白损失。同时,这种认知还可能导致客因此, 航空公司在对会员升级或保级进行评价的时间点之前,可以对那些接近但尚未户的不满,就 放弃在本公司的消费。达到要求的较高消费客户进行适当提醒甚至采取一些促销活动,刺激 他们通过消费达到相应标准。这样既可以获得收益,同时也提高了客户的满意度,增加了公 司的精英会员。
- 2、首次兑换
- 航空公司常旅客计划中最能够吸引客户的内容就是客户可以通过消费积累的里程来换 免票或免费升舱等。各个航空公司都有一个首次兑换标准,也就是当客户的里程或期段积累 到一定程度时才可以实现第一次兑换,这个标准会高于正常的里程兑换标准。但是多公司的里程积累随着时间会进行一定的削减,例如有的公司会在年末对该年积累的里进行折半处理。 这样会导致许多不了解情况的会员白白损失自己好不容易积累的里程,甚至总是难以实现首 次兑换。同样,这也会引起客户的不满或流失。可以采取的措施是据库中提取出接近但尚未 达到首次兑换标准的会员,对他们进行提醒或促销,使他们通过消费达到标准。一旦实现了 首次兑换,客户在本公司进行再次消费兑换就比在其他公司行兑换要容易许多,等于在一定 程度上提高了转移的成本。另外,在一些特殊的时间点(如里程折半的时间点)之前可以给客 户一些提醒,这样可以增加客户的满意度
- 3、交叉销售
- 通过发行联名卡等与非航空类企业的合作,使客户在其他企业的消费过程中获得本司的 积分,增强与公司的联系,提高他们的忠诚度。如可以查看重要客户在非航空类合作伙伴处 的里程积累情况,找出他们习惯的里程积累方式(是否经常在合作伙伴处消费,更喜欢消费 哪些类型合作伙伴的产品),对他们进行相应促销。客户识别期和发展期为客户关系打下基石,但是这两个时期带来的客户关系是短暂的不稳定的。企业要获取长期的利润,必须具有 稳定的、高质量的客户。保持客户对于企业是至关重要的,不仅因为争取一个新客户的成本 远远高于维持老客户的成本,更重要的是客户流失会造成公司收益的直接损失。因此,在这 一时期,航空公司应该努力维系客户关系水平,使之处于较高的水准,最大化生命周期内公 司与客户的互动价值,并使这样的高水平尽可能延长。对于这一阶段的客户,主要应该通过 提供优质的服务产品和提高服务水平来提高客户的满意度。通过根据对常旅客数据库的数据 分析,进行客户细分,可以获得重要保持客户的名单。这类客户一般所乘航班的平均折扣系 数(C)较高,最近乘机距今的时间长度(R)低,飞行次数(F)或总飞行里程(M)也较高。他们是 航空公司的价值客户,是最为理想的客户类型,对航空公司的贡献最大,所占比例却比较小。 航空公司应该优先将资源投放到他们身上,对他们进行差异化管理和一对一营销,提高这类 客户的忠诚度与满意度,尽可能延长这类客户的高水平消费。
标签:机器,data,air,---,客户,airline,print,航空公司 来源: https://www.cnblogs.com/yufei12/p/15008487.html