背景与分析方法

本文是接着航空公司客户价值分析,这是拓展思考的部分,这里简单的将它做了一下。在客户管理中,客户流失也是一个十分重要的问题。客户流失对利润增长造成的负面影响非常大,客户与航空公司之间的关系越长久,给航空公司带来的利润就回越高。所以流失一个客户,比获得一个新客户对公司的损失更大。
客户流失分析针对老客户进行分析预测,这里的老客户定义为飞行次数大于6次的客户。用航空公司客户信息数据来进行分类模型训练,预测未来客户的类别归属:未流失、准流失或已流失。

特征选择

这里直接采用之前清洗好的数据集来进行特征选择,这里选择的关键属性有:会员卡级别、客户类型、平均乘机时间间隔、平均折扣率、积分兑换次数、非乘机积分总和、单位里程票价以及单位里程积分等。其中客户类型需要进行筛选定义,单位里程票价和单位里程积分需要进行计算。
选择代码如下:

import pandas as pd
#读数据
input_file = '../data/cleaned.xls'
output_file = '../tmp/selected.xls'
data = pd.read_excel(input_file)
#选取特征
data['单位里程票价'] = (data['SUM_YR_1'] + data['SUM_YR_2'])/data['SEG_KM_SUM']
data['单位里程积分'] = (data['P1Y_BP_SUM'] + data['L1Y_BP_SUM'])/data['SEG_KM_SUM']
data['飞行次数比例'] = data['L1Y_Flight_Count'] / data['P1Y_Flight_Count'] #第二年飞行次数与第一年飞行次数的比例
#筛选出老客户(飞行次数大于6次的为老客户)
data = data[data['FLIGHT_COUNT'] > 6]
#选择特征
data = data[['FFP_TIER','飞行次数比例','AVG_INTERVAL','avg_discount','EXCHANGE_COUNT','Eli_Add_Point_Sum','单位里程票价','单位里程积分']]
#导出
data.to_excel(output_file,index=None)

然后进行客户类别的定义添加,代码如下:

import pandas as pd
input_file = '../tmp/selected.xls'
output_file = '../tmp/classfication.xls'
data = pd.read_excel(input_file)
data['客户类型'] = None
for i in range(len(data)):#第一、二年飞行次数比例小于50%的客户定义为已流失if data['飞行次数比例'][i] < 0.5:data['客户类型'][i] = 0 #0代表已流失#第一、二年飞行次数比例在[0.5,0.9)之间的客户定义为准流失if (data['飞行次数比例'][i] >= 0.5) & (data['飞行次数比例'][i] < 0.9) :data['客户类型'][i] = 1 #1代表准流失#第一、二年飞行次数比例大于等于90%的客户定义为未流失if data['飞行次数比例'][i] >= 0.9:data['客户类型'][i] = 2 #2代表未流失
#导出
data.to_excel(output_file,index=None)

到这里基本上将可以用来训练的数据集准备好了,但是还需要一定的处理。

标准化处理

查看之前选择完的数据集,如下图所示,发现其跨度还是比较大,需要进行标准化处理。

处理的代码如下:

import pandas as pd
#读数
input_file = '../tmp/classfication.xls'
output_file = '../tmp/std.xls'
data = pd.read_excel(input_file)
#去掉飞行次数比例
data = data[['FFP_TIER','AVG_INTERVAL','avg_discount','EXCHANGE_COUNT','Eli_Add_Point_Sum','单位里程票价','单位里程积分','客户类型']]
#标准化
data.loc[:,:'单位里程积分'] = (data.loc[:,:'单位里程积分'] - data.loc[:,:'单位里程积分'].mean(axis = 0)) \/ (data.loc[:,:'单位里程积分'].std(axis = 0))
#导出
data.to_excel(output_file,index=None)

到这里就把能用来进行模型训练的数据集准备好了,下面就需要进行模型的选择以及模型参数的选择了。

模型选择

在本文中主要对两个算法进行了测试,分别是决策树以及SVM算法。采用了交叉验证的方法,来测试哪个模型表现得好,主要代码如下所示:

import pandas as pd
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
input_file = '../tmp/std.xls'
data = pd.read_excel(input_file)
#划分X,y
X = data.loc[:,:'单位里程积分'].values
y = data.loc[:,'客户类型'].values
#模型选择使用交叉验证法来评估模型
model1 = DecisionTreeClassifier()
model2 = SVC(kernel='rbf')
score1 = cross_val_score(model1,X,y,cv=5)
score2 = cross_val_score(model2,X,y,cv=5)
print('决策树模型得分:{:.2f}'.format(score1.mean()))
print('SVM模型得分:{:.2f}'.format(score2.mean()))

结果如下图所示:

可以看到在还没有对SVM进行参数选择优化的时候,SVM得分已经远远超过了决策树,所以在本次流失分析中,初步选择SVM模型进行此次的分类模型训练。

模型参数选择

在这里使用网格搜索法来选取SVM的最优参数,即确定C、gamma的值,代码如下:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
import joblib
#读取数据
input_file = '../tmp/std.xls'
output_file = '../tmp/loss.pkl'
data = pd.read_excel(input_file)
#划分训练集、测试集
X = data.loc[:,:'单位里程积分'].values
y = data.loc[:,'客户类型'].values
X_train,X_test,y_train,y_test =  train_test_split(X,y,train_size = 0.8)
#采用网格搜索法来寻找SVC的最优参数
svc = SVC(kernel='rbf')
params = {'gamma':[0.1,1.0,10.0],'C':[1.0,10.0,100.0]}
grid_search = GridSearchCV(svc,params,cv=5)
grid_search.fit(X_train,y_train)
print('模型最高分 {:.2f}'.format(grid_search.score(X_test,y_test)))
print('最优参数为: {}'.format(grid_search.best_params_))

执行结果如下:

可以看到模型得分并不是很高,最佳参数也出来了,暂且就这样用用吧,接下来用最佳参数来训练模型并保存。

svc = SVC(kernel='rbf',C=1.0,gamma=1.0)
svc.fit(X_train,y_train)
joblib.dump(svc,output_file)

这样就将模型保存好了,后面再用模型来进行预测。

模型预测

这里就只用测试集的一组数据进行测试了,看是否预测分类正确,代码如下:

import joblib
from model import X_test,y_test
#导入模型
model = joblib.load('../tmp/loss.pkl')
#预测分类
y_predict = model.predict([X_test[0]])
print(y_predict)
print(y_test[0])

运行结果如下所示:

如上图所示,这一组预测是正确的,预测的结果是2代表未流失,实际结果也是未流失,说明预测正确,虽然这次的模型得分不高但主要是用来练一下手,有兴趣的可以下来看采用什么办法来提高模型得分。

航空公司客户流失分析相关推荐

  1. 数据挖掘 | 航空公司客户流失预测

    之前的一篇博客介绍了关于航空公司客户价值分析,今天的这篇博客将对航空公司的客户的流失进行预测.采用的是相同的数据集. 1. 背景 客户流失对企业利润的增长造成的负面影响很大.客户与航空公司之间的关系越 ...

  2. 数据挖掘——航空公司客户价值分析(分析+建模)

    前言 本次建模项目是来自于<python数据分析与挖掘实战>的案例,是介绍航空公司客户价值的分析,书中给出了关于62988个客户的基本信息和在观测窗口内的消费积分等相关信息,其中包含了会员 ...

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

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

  4. 基于python分析航空公司客户价值《数据挖掘》 课程实验报告

    一.实验目的 1)了解K-Means 聚类算法在客户价值分析实例中的应用. 2)利用pandas快速实现数据z-score(标准差)标准化以及用scikit-learn 的聚类库实现K-Means聚类 ...

  5. 数据挖掘——RFM客户价值模型及航空公司客户分析实例

    引言 背景 信息时代的来临使得企业营销焦点从产品转向了客户,客户的管理关系成为企业的核心问题.客户的关系管理问题是客户分群.通过客户分群,进而区分无价值客户和高价值客户.高价值客户代表他们的消费会给企 ...

  6. 利用Python分析航空公司客户价值

      利用Python分析航空公司客户价值 一.背景介绍 随着社会生活中数据量的急剧增多,如何从这些海量的数据中提取与发掘出对我们决策有用的信息成为当前亟待解决的题,因此,数据分析与挖掘技术在这些年得到 ...

  7. 窗口属性 客户矩形_航空公司客户价值分析

    目录 1.背景与挖掘目标 2.分析方法与过程 2.1 总体流程 2.2 数据抽取 2.3 数据探索分析 2.4 数据预处理 2.4.1 数据清洗 2.4.2 属性规约 2.4.3 数据变换 2.5 模 ...

  8. 【数据挖掘实战】——航空公司客户价值分析(K-Means聚类案例)

    目录 一.背景和挖掘目标 1.RFM模型缺点分析 2.原始数据情况 3.挖掘目标 二.分析方法与过程 1.初步分析:提出适用航空公司的LRFMC模型 2.总体流程 第一步:数据抽取 第二步:探索性分析 ...

  9. 数据分析实战:航空公司客户价值分析

    一.背景目标 通过对航空公司客户数据分析,对客户进行分类: 比较不同客户的客户价值,并制定不同的服务和营销策略 二.数据探索分析 2.1 数据概况 数据时间范围: 2012年4月1日至2014年3月3 ...

  10. 毕业设计之 ---基于大数据分析的航空公司客户价值分析

    文章目录 0 前言 1 数据分析背景 2 分析策略 2.1 航空公司客户价值分析的LRFMC模型 2.2 数据 2.3 分析模型 3 开始分析 3.1 数据预处理 3.1.1 数据预览 3.1.2 数 ...

最新文章

  1. CCTouchDispatcher sharedDispatcher 方法过期
  2. Android开发之单例模式初探
  3. 宅男程序员给老婆的计算机课程之9:数据模型
  4. tomcat7 https 拒绝连接_Ubuntu上运行Docker提示权限拒绝,如何处理?
  5. [译] 每天一段 Spring 5 官方文档(5.1.4.RELEASE)—— Spring Framework Overview 06
  6. 【.NET正则表达式库】v1.0上线
  7. redis.exceptions.ResponseError: WRONGTYPE Operation against a key holding the wrong kind of value
  8. JavaScript字符串、数组、对象方法总结
  9. 利用TF-IDF提取新闻文章摘要
  10. E-prime实验设计常用技术
  11. 神经网络的发展与应用
  12. resin log日志
  13. 2019年春招汇总,技术类校招社招千道面试题,几百份大厂面经(附答案+考点)
  14. (最详细)小米手机4c的USB调试模式在哪里开启的教程
  15. abrt-hook-ccpp
  16. 智在未来,明年再聚--OFweek2018(第三届)中国高科技产业大会完美闭幕!
  17. Cygwin的安装及csh的配置和使用(批量下载FNL数据方法)
  18. Ubuntu安装apex教程
  19. 单片机控制数码管自动显示1-99
  20. 2018传智黑马前端视频教程36期视频与源码完整版

热门文章

  1. 计算摄影技术:身怀绝技的扫地僧
  2. 【wordpress】wordpress自己制作主题看这一篇就够了/常用函数/注意事项
  3. 利用Greenfoot制作简单的小游戏——记忆翻牌游戏(四)
  4. Global Mapper 将散点数据转为grd或者其他各种格式数据
  5. Promise的三种状态
  6. java security md5_java自带的加密--java.security.MessageDigest(md5加密)
  7. java 美元符号_$ -----JavaScript 中美元符号 $ 的作用
  8. 锯齿波调制的FMCW雷达差拍信号的推导及分析
  9. 微信语音技术原理_玩人工智能的你必须知道的语音识别技术原理
  10. 服务器冗余电源维修图纸,冗余热备份电源的电路图设计