python数据分析实例:客户流失预警模型
python数据分析实例:客户流失预警模型
客户流失是电信行业最重要的服务方面之一。客户流失的广义说法是因为客户自己或运营商违反服务协议而终止客户服务的行为。
流失预测流程一共分为四个步骤,分别为(1)数据预处理(2)特征选择(3)模型选择(4)模型评估
1. 数据理解
数据取自于kaggle平台分享的数据集,共有21个字段7043条记录。 数据主要包括影响客户流失的各种因素(性别、是否为老年人、客户是否有合作伙伴、客户是否有依赖关系、客户在公司停留的月数、客户是否有电话服务、客户是否有多条线路、客户的互联网服务提供商、客户是否有网上安全等)以及客户是否已经流失的对应记录。 字段基本说明如下:
可以发现,数据质量良好,没有缺失数据。
2.探索性分析
2.1 描述性统计
df.describe().T
从上述描述性分析结果可以看出:
是否老年人:范围0~1, 中位数0, 均值0.162147, 总体来说老年客户占比小;
客户在公司停留的月数:范围0~72, 中位数29, 均值32.371149;
每月收取的费用:范围18.25~118.75, 中位数70.35, 均值64.761692;
从中可以看出离散型变量较多,适合用RF模型进行预测
3. 数据预处理
由于sklearn在建模时不接受类别型变量,我们主要对数据做以下处理,以方便后续建模分析:
- 性别、合同时长、支付方式是定类型变量, 对其进行one-hot编码。
# 哑变量
df_dummies = pd.get_dummies(df,prefix=' ')
4. 建模分析
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report, f1_score, roc_curve, plot_roc_curve
#划分测试集和训练集
x = df_dummies.drop('churn', axis=1)
y = df_dummies['churn']X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2, stratify=y, random_state=2020)
print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)
#采用基尼系数,树的深度为5去预测节点
clf = DecisionTreeClassifier(criterion='gini', max_depth=5, random_state=25)
clf.fit(X_train, y_train)
train_pred = clf.predict(X_train)
test_pred = clf.predict(X_test)print('训练集:', classification_report(y_train, train_pred))
print('-' * 60)
print('测试集:', classification_report(y_test, test_pred))
#查看个变量之间的相关系数
imp = pd.DataFrame([*zip(X_train.columns,clf.feature_importances_)], columns=['vars', 'importance'])
imp.sort_values('importance', ascending=False)
imp = imp[imp.importance!=0]rf_model = RandomForestClassifier(n_estimators=1000, oob_score=True, n_jobs=-1,random_state=0)
parameters = {'max_depth': np.arange(3, 17, 1) }
GS = GridSearchCV(rf_model, param_grid=parameters, cv=10)
GS.fit(X_train, y_train)print(GS.best_params_)
在本例中,使用决策树训练结果
可以看出准确率很低,1类 f1score只有0.6
相关度分析:
可以看出合同月制对客户流失有很大影响,其次电子支付也有一定影响
最后采用rf并使用网格搜索进行参数调优之后,模型准确率如下
{'criterion': 'gini', 'max_depth': 20, 'splitter': 'best'}
0.9500813177648042
模型的f1_score=0.95 明显提升
随机森林的优点较多,简单总结:
训练可以高度并行化,对于大数据时代的大样本训练速度有优势
由于随机选择特征时只考虑特征子集,因此样本特征维度很高时仍然高效
训练后,可以给出各个特征的重要性
由于采用了随机采样,方差小,泛化能力强
相比Boosting,实现简单
RF的缺点:在噪声较大的分类或者回归问题上会过拟合。
在本例中,因为有几个字段是连续性变量,模型容易过拟合,泛化能力下降,后续可以通过分箱,或者采用boosting学习器方法下的XGboost提升模型泛化能力
python数据分析实例:客户流失预警模型相关推荐
- 金融风控-- >客户流失预警模型-- >金融数据分析
从这篇博文开始,我将介绍机器学习,深度学习在金融风控这个行业上的应用.其实机器学习,深度学习在一些相关场景上的应用,其解决方法都是大同小异,差不多都是固定的解决套路,但是需要结合这个场景这个行业领域的 ...
- 数学建模学习(2)—— 客户流失预警模型案例评估 ROC曲线与KS曲线(2022.7.19)
昨天晚上做了个梦,梦到被老师臭骂了一顿,可以说当时把我直接吓醒了,醒过来后,惊叹一声,还好是个梦.在上个笔记中学习了逻辑回归的运用,这节课再来看一看对模型评估的方法. 文章目录 目录 文章目录 一.R ...
- 客户流失预警模型怎么做?
客户流失预警模型怎么做? 贷中策略除了跟调额.营销相关外,与客户流失相关及营销相关的还有一个客户流失预测模型,是我们全流程中必不可少的一个客群分析. 目前,银行都面临着极大的优质客户流失的危险.这将对 ...
- 客户流失预警模型-GBDT模型
GBDT模型参数问题,这里我们以sklearn里面的GBDT为例来说,打开网址sklearn.ensemble.GradientBoostingClassifier.这里我们不关注GBDT里面的所有参 ...
- 逻辑回归模型——股票客户流失预警模型
1.读取数据 import pandas as pd df = pd.read_excel('股票客户流失.xlsx') df.head() 2.划分特征变量和目标变量 X = df.drop(['是 ...
- python 数据分析 电信_基于Python的电信客户流失分析和预测
一.项目背景 电信服务是生活中常见的消费服务,在现代社会,凡是使用手机打电话,或者在家看电视,都必须通过电信运营商提供的通话.网络等服务才能实现.本文采用来自kaggle平台的电信客户数据集,来分析人 ...
- 基于python的股票客户流失数据分析模型
目录 1.案例背景 2 2. 读取数据 2 3. 划分特征变量和目标变量 3 4. 模型的搭建和使用 3 5. 模型的使用 4 6. ROC曲线对模型的评估 7 7.总结 10 8.参考文献 10 9 ...
- 银行客户流失预警模型——业务分析及代码(实战)
DataMiningCase 点击跳转GitHub地址 流失预警模型(二分类),代码原型为本人在某银行做的流失模型,AUC:83%.召回率:19.4%,精确率:85%(数据是外部数据/代码已脱敏) 你 ...
- 字节跳动大佬全新开源:Python数据分析实例,建议收藏!
近几年,互联网领域进入大数据红利时代.包括腾讯.阿里.字节在内的各大巨头,依靠基于大数据的商业模式成为了当下最挣钱的公司. 所以行业对数据人才的需求量巨大,仅字节一家在本季度就有近千个数据类职位虚席以 ...
最新文章
- Java项目:疫情人员流动管理系统(java+JSP+SSM+Springboot+maven+Mysql)
- 分享几个用 Python 给图片添加水印的方法,简单实用
- 第十六届全国大学生智能车提问与回复 |7月10日
- 网站截图工具EyeWitness
- Prosjecni(构造)
- CSS:理解:Before和:After伪元素
- “浴霸”三摄出镜率真高!中兴Blade 20工信部入网
- 韩国遭 Lazarus Group 供应链攻击
- laravel-excel文档翻译笔记
- 百余篇SCI文章的一字经验----短
- 京瓷300i_kyocera cs 300i kx驱动下载
- 射频天线设计-窄带阻抗匹配电路设计
- 研究生毕业做软件测试,毕业研究生,转学软件测试月薪11K,会做选择的人生到底有多赚?...
- 碱基数据处理中的算法研究
- ts自动编译声明文件_TS 的声明文件
- CKPlayer视频地址加密方法
- 服务器自带软件怎么样卸载,告别卸载软件难 四大方法轻松搞定
- Java Online IDE
- 局部路径规划算法-DWA动态窗口法
- lattepanda安装linux系统,lattepanda alpha Ubuntu18.04下配置串口登录
热门文章
- 详解贝叶斯(一):贝叶斯概率
- [Xcode 实际操作]八、网络与多线程-(25)实现ShareSdk的社会化分享功能
- C语言之常见表格汇总
- layui如何获取父节点的父节点_element-ui tree控件获取当前节点和父节点
- 大数据测试之ETL测试入门
- 软件工程综合性实验 - 图书馆管理系统的需求分析
- php 可以编辑treegrid,Easyui Treegrid 树形网格_EasyUI 插件
- 哀悼!旷视首席科学家孙剑博士突然离世,终年45岁
- 基于PHP的图书管理系统(图片详情版)
- 'make menuconfig' requires the ncurses libraries.