原标题:一个完整的数据分析案例 | 用Python建立客户流失预测模型(含源数据+代码)

来源:数据分析不是个事儿

作者:启方

原文:

https://mp.weixin.qq.com/s/_20MN6V6aV1T3Ekd7C9neQ

客户流失是所有与消费者挂钩行业都会关注的点。因为发展一个新客户是需要一定成本的,一旦客户流失,成本浪费不说,挽回一个客户的成本更大。

今天分享一个用户流失预测,以电信行业为例。

所以,电信行业在竞争日益激烈当下,如何挽留更多用户成为一项关键业务指标。为了更好运营用户,这就要求要了解流失用户的特征,分析流失原因,预测用户流失,确定挽留目标用户并制定有效方案。

一、提出问题

1、哪些用户可能会流失?

2、流失概率更高的用户有什么共同特征?

二、理解数据

1、采集数据

本数据集来自DF ,数据源地址:

https://www.datafountain.cn/dataSets/35/details#

本数据集描述了电信用户是否流失以及其相关信息,共包含7044条数据,共20个字段,介绍下各个字段:

customerID :用户ID。

gender:性别。(Female & Male)

SeniorCitizen :老年人 (1表示是,0表示不是)

Partner :是否有配偶 (Yes or No)

Dependents :是否经济独立 (Yes or No)

tenure :客户的职位(0-72,共73个职位)

PhoneService :是否开通电话服务业务 (Yes or No)

MultipleLines:是否开通了多线业务(Yes 、No or No phoneservice 三种)

InternetService:是否开通互联网服务 (No, DSL数字网络,fiber optic光纤网络 三种)

OnlineSecurity:是否开通网络安全服务(Yes,No,No internetserive 三种)

OnlineBackup:是否开通在线备份业务(Yes,No,No internetserive 三种)

DeviceProtection:是否开通了设备保护业务(Yes,No,No internetserive 三种)

TechSupport:是否开通了技术支持服务(Yes,No,No internetserive 三种)

StreamingTV:是否开通网络电视(Yes,No,No internetserive 三种)

StreamingMovies:是否开通网络电影(Yes,No,No internetserive 三种)

Contract:签订合同方式 (按月,一年,两年)

PaperlessBilling:是否开通电子账单(Yes or No)

PaymentMethod:付款方式(bank transfer,credit card,electronic check,mailed check)

MonthlyCharges:月费用

TotalCharges:总费用

Churn:该用户是否流失(Yes or No)

2、导入数据

3、查看数据集信息

三、数据清洗

1、查找缺失值

数据集中有5174名用户没流失,有1869名客户流失,数据集不均衡。

2、查看数据类型

TotalCharges表示总费用,这里为对象类型,需要转换为float类型

3、转换类型

再次查找缺失值:

这里存在11个缺失值,由于数量不多我们可以直接删除这些行

4、处理缺失值

5、数据归一化处理

四、数据可视化呈现

1、查看流失客户占比

由图中结果可以看出,流失客户占整体客户的26.6%。

2、性别、老年人、配偶、亲属对流客户流失率的影响

性别、老年人占比结果

配偶、亲属占比结果

可以看出,男性与女性用户之间的流失情况基本没有差异,而在老年用户中流失占比明显比非老年用户更高,在所有数据中未婚与已婚人数基本持平,但未婚中流失人数比已婚中的流失人数高出了快一倍,从经济独立情况来看,经济未独立的用户流失率要远远高于经济独立的用户。

3、提取特征

4、构造相关性矩阵

5、使用热地图显示相关系数

结论:

从上图可以看出,互联网服务、网络安全服务、在线备份业务、设备保护业务、技术支持服务、网络电视和网络电影之间存在较强的相关性,多线业务和电话服务之间也有很强的相关性,并且都呈强正相关关系。

6、使用one-hot编码

7、电信用户是否流失与各变量之间的相关性

由图上可以看出,变量gender 和 PhoneService 处于图形中间,其值接近于 0 ,这两个变量对电信客户流失预测影响非常小,可以直接舍弃。

8、网络安全服务、在线备份业务、设备保护业务、技术支持服务、网络电视、网络电影和无互联网服务对客户流失率的影响

由上图可以看出,在网络安全服务、在线备份业务、设备保护业务、技术支持服务、网络电视和网络电影六个变量中,没有互联网服务的客户流失率值是相同的,都是相对较低。

这可能是因为以上六个因素只有在客户使用互联网服务时才会影响客户的决策,这六个因素不会对不使用互联网服务的客户决定是否流失产生推论效应。

9、签订合同方式对客户流失率的影响

由图上可以看出,签订合同方式对客户流失率影响为:按月签订 > 按一年签订 > 按两年签订,这可能表明,设定长期合同对留住现有客户更有效。

10、付款方式对客户流失率的影响

由图上可以看出,在四种支付方式中,使用Electronic check的用户流流失率最高,其他三种支付方式基本持平,因此可以推断电子账单在设计上影响用户体验。

五、数据预处理

由前面结果可知,CustomerID表示每个客户的随机字符,对后续建模不影响,我这里选择删除CustomerID列;gender 和 PhoneService 与流失率的相关性低,可直接忽略。

对客户的职位、月费用和总费用进行去均值和方差缩放,对数据进行标准化:

使用箱线图查看数据是否存在异常值:

由以上结果可以看出,在三个变量中不存在明显的异常值。

查看对象类型字段中存在的值:

综合之前的结果来看,在六个变量中存在No internet service,即无互联网服务对客户流失率影响很小,这些客户不使用任何互联网产品,因此可以将No internet service 和 No 是一样的效果,可以使用 No 替代 No internet service。

使用Scikit-learn标签编码,将分类数据转换为整数编码:

六、构建模型

1、建立训练数据集和测试数据集

2、选择机器学习算法

3、训练模型

4、评估模型

召回率(recall)的含义是:原本为对的当中,预测为对的比例(值越大越好,1为理想状态)

精确率、精度(precision)的含义是:预测为对的当中,原本为对的比例(值越大越好,1为理想状态)

F1分数(F1-Score)指标综合了Precision与Recall的产出的结果

F1-Score的取值范围从0到1的,1代表模型的输出最好,0代表模型的输出结果最差。

综上所述,在10种分类算法中朴素贝叶斯(Naive Bayes)的F1分数最大为63.31%,所以使用朴素贝叶斯模型效果最好。

七、实施方案

八、结论

通过上述分析,我们可以大致勾勒出容易流失的用户特征:

老年用户与未婚且经济未独立的青少年用户更容易流失。

电话服务对用户的流失没有直接的影响。

提供的各项网络服务项目能够降低用户的流失率。

签订合同越久,用户的留存率越高。

采用electronic check支付的用户更易流失。

针对上述诊断结果,可有针对性的对此提出建议:

推荐老年用户与青少年用户采用数字网络,且签订2年期合同(可以各种辅助优惠等营销手段来提高2年期合同的签订率),若能开通相关网络服务可增加用户粘性,因此可增加这块业务的推广,同时考虑改善电子账单支付的用户体验。

最后,分享源码:

https://paste.ubuntu.com/p/tsZjWrVvY9/

数据源地址:

https://www.datafountain.cn/dataSets/35/details

【数据说话】分析Python岗位就业前景 返回搜狐,查看更多

责任编辑:

python数据建模案例源代码_一个完整的数据分析案例 | 用Python建立客户流失预测模型(含源数据+代码)...相关推荐

  1. python 用模型预测数据 代码_万字案例 | 用Python建立客户流失预测模型(含源数据+代码)...

    客户流失是所有与消费者挂钩行业都会关注的点.因为发展一个新客户是需要一定成本的,一旦客户流失,成本浪费不说,挽回一个客户的成本更大. 今天分享一个用户流失预测,以电信行业为例. 所以,电信行业在竞争日 ...

  2. 用python对人口模型数据拟合_万字案例 | 用Python建立客户流失预测模型(含源数据+代码)...

    1.采集数据 本数据集来自DF ,数据源地址: https://www.datafountain.cn/dataSets/35/details# 本数据集描述了电信用户是否流失以及其相关信息,共包含7 ...

  3. python数据模型和算法_万字案例 | 用Python建立客户流失预测模型(含源数据+代码)...

    # coding: utf-8# # 电信客户流失预测# ## 1.导入数据# In[1]:import numpy as npimport pandas as pdimport os# In[2]: ...

  4. python微信好友分析源代码_搞事情了 | 教你用Python分析微信好友信息(内附完整代码)...

    本文经授权转载至公众号 Python 知识圈 未经授权 严禁二次转载 阅读文本大概需要 5 分钟 技术群里一位读者微信私聊我,问我能不能统计下微信好友信息并以文件形式保存.其实,以前也写过类似的文章, ...

  5. 一个完整的数据分析案例 | 用Python完成用户预测分析

    概述: 数据集是基于开源数据集Bank Marketing Data Set 的分类预测,本数据集与葡萄牙银行机构的营销活动相关. 这些营销活动一般以电话为基础,银行的客服人员至少联系客户一次,以确认 ...

  6. 结合源代码分析一个完整的中断过程【转】

    转自:http://blog.csdn.net/rosetta/article/details/49454021 转载请注明出处:http://blog.csdn.net/rosetta 结合源代码分 ...

  7. 二十四、Python数据建模(下),禁止转载

    @Author : By Runsen @Date : 2020/5/14 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘 ...

  8. python数据建模数据集_Python中的数据集

    python数据建模数据集 There are useful Python packages that allow loading publicly available datasets with j ...

  9. 数据分析人必看,分享一个完整的数据分析流程

    想入门数据分析应该怎么学?新手做数据分析有哪些好用的工具?会用 Excel 但是做分析总是没思路怎么办?做数据分析有哪些方法...... 以上这些问题,相信各位想入门数据分析的小伙伴们或多或少都会遇到 ...

最新文章

  1. python可以做什么系统-python什么系统
  2. 使用SAP UI5 Web Components开发React应用
  3. MySQL知识总结(二)基本语句总结
  4. c# 类对象和实例对象_C#类和对象能力问题 套装4
  5. linux下串口的阻塞和非阻塞操作
  6. 【计蒜客 - 程序设计竞赛】商业信息共享(Tarjan缩点)
  7. 导入csv未响应_IOS免费P12企业证书分享!支持导入Gbox和闪电签!Windows和Mac通用!...
  8. android对应版本号
  9. B/S页面通用数据权限控制[转]
  10. 拆箱装箱有什么作用JAVA_基础--最简单明了的拆箱装箱解释,带实例
  11. 计算机技术薄弱对我省影响,计算机技术在贵州省西南地区的运用前景.docx
  12. java maven本地库导入本地包
  13. 无法启动计算机上的服务msdtc,MSDTC服务无法启动,导致网站打不开
  14. Linux安装NVIDIA显卡驱动的正确姿势
  15. 2021年上半年软考真题及答案解析汇总
  16. 20行Python代码爬取网站美女图,哇太多了,我U盘装满了
  17. 天梯赛--清点代码库
  18. mysql两个日期相减,得到相差的天数
  19. springboot导入excel表格
  20. 关于 intel 82583v 在 server2012 下安装问题

热门文章

  1. 【无标题】cannot import name ‘container_abcs‘ from ‘torch._six‘错误的解决方法(pytorch高版本1.9后)
  2. AspectJ编译器织入与SpringAOP的运行期织入
  3. Nginx 启停方法
  4. 【scrapy爬虫】了解Scrapy+爬虫豆瓣电影Top250信息
  5. Tableau雷达图和凹凸图
  6. 腾讯会议 for Mac(云视频会议软件)
  7. 中国第一个Oracle高可用认证大师?
  8. 一台液晶显示屏的台式计算机,台式电脑液晶显示器怎么购买?
  9. 多线程问题之火车票售票
  10. SEA创建、网卡聚合