数据分享|Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户...
原文链接:http://tecdat.cn/?p=23518
项目背景:银行的主要盈利业务靠的是贷款,这些客户中的大多数是存款大小不等的责任客户(存款人)。银行拥有不断增长的客户(点击文末“阅读原文”获取完整代码数据)。
该银行希望增加借款人(资产客户),开展更多的贷款业务,并通过贷款利息赚取更多利润。因此,银行希望将负债的客户转换为个人贷款客户。(同时保留他们作为存款人)。该银行去年针对负债客户开展的一项活动显示,成功实现了9%以上的成功转化率。该部门希望建立一个模型,来帮助他们确定购买贷款可能性更高的潜在客户。可以增加成功率,同时降低成本。
相关视频
数据集
下面给出的文件包含5000个客户的数据(查看文末了解数据获取方式)。数据包括客户人口统计信息(年龄,收入等),客户与银行的关系(抵押,证券账户等)以及客户对上次个人贷款活动的因变量(个人贷款)。在这5000个客户中,只有480个(= 9.6%)接受了先前活动中提供给他们的个人贷款
data.head()
data.columns
属性信息
属性可以相应地划分:
变量 ID 一个人的客户ID与贷款之间没有关联,也无法为将来的潜在贷款客户提供任何一般性结论。我们可以忽略此信息进行模型预测。
二进制类别具有五个变量,如下所示:
个人贷款-该客户是否接受上一个广告系列提供的个人贷款? 这是我们的目标变量
证券帐户-客户在银行是否有证券帐户?
CD帐户-客户在银行是否有存款证明(CD)帐户?
网上银行-客户是否使用网上银行?
信用卡-客户是否使用银行发行的信用卡?
数值变量如下:
年龄-客户的年龄
工作经验
收入-年收入(元)
CCAvg-平均信用卡消费
抵押-房屋抵押价值
有序分类变量是:
家庭-客户的家庭人数
教育程度-客户的教育程度
标称变量是:
ID
邮政编码
data.shape
data.info()
# 文件中没有列有空数据
data.apply(lambda x : sum(x.isnull()))
# 对数据进行目测
data.describe().transpose()
#查看有多少不同数据
data.apply(lambda x: len(x.unique()))
两两变量散点图
年龄 特征通常是分布的,大多数客户年龄在30岁到60岁之间。
经验 大多分布在8年以上经验的客户。这里的 平均值 等于中 位数。有负数 。这可能是数据输入错误,因为通常无法衡量负数的工作经验。我们可以删除这些值,因为样本中有3或4条记录。
收入出现 正偏斜。大多数客户的收入在45,000到55K之间。我们可以通过说平均值 大于 中位数来确认这一点
CCAvg 也是一个正偏变量,平均支出在0K到10K之间,大多数支出不到2.5K
抵押 70%的人的抵押贷款少于4万。但是最大值为635K
家庭和教育变量是序数变量。家庭分布均匀
有52条记录经验为负数。在进一步进行之前,我们需要对这些记录进行清理
data\[data\['Experience'\] < 0\]\['Experience'\].count()
52
#清理负数变量
dfExp = data.loc\[data\['Experience'\] >0\]
data.loc\[negExp\]\['ID'\].tolist() # 得到有负数经验的客户ID
有52条负数经验的记录
以下代码执行以下步骤:
对于具有ID的记录,获取
Age
column的值对于具有ID的记录,获取
Education
column的值从具有正数经验的记录的数据框中过滤符合以上条件的记录,并取中位数
将中位数填充原本负数经验的位置
data.loc\[np.where(\['ID'\]==id)\]\["Education"\].tolist()\[0\]
df_filtered\['Experience'\].median()
# 检查是否有负数经验的记录
data\[data\['Experience'\] < 0\]\['Experience'\].count()
0
收入和教育对个人贷款的影响
boxplot(x='Education',y='Income',data=data)
观察 :看来教育程度为1的客户收入更高。但是,接受了个人贷款的客户的收入水平相同
点击标题查阅往期内容
R语言基于决策树的银行信贷风险预警模型
左右滑动查看更多
01
02
03
04
推论 :从上图可以看出,没有个人贷款的客户和拥有个人贷款的客户的抵押贷款较高。
观察 :大多数没有贷款的客户都有证券账户
观察:家庭人数对个人贷款没有任何影响。但是似乎3岁的家庭更有可能借贷。考虑未来的推广活动时,这可能是一个很好的观察结果。
观察:没有CD帐户的客户,也没有贷款。这似乎占多数。但是几乎所有拥有CD帐户的客户也都有贷款
观察:该图显示有个人贷款的人的信用卡平均费用更高。平均信用卡消费中位数为3800元,表明个人贷款的可能性更高。较低的信用卡支出(中位数为1400元)不太可能获得贷款。这可能是有用的信息。
观察 上图显示与经验和年龄呈正相关。随着经验的增加,年龄也会增加。颜色也显示教育程度。四十多岁之间存在差距,大学以下的人也更多
# 与热图的关联性corr = data.corr()
plt.figure(figsize=(13,7))
# 创建一个掩码,以便我们只看到一次相关的值a = sns.heatmap(corr,mask=mask, annot=True, fmt='.2f')
观察
收入和CCAvg呈中等相关。
年龄和工作经验高度相关
sns.boxplot
看下面的图,收入低于10万的家庭比高收入的家庭更不可能获得贷款。
应用模型
将数据分为训练集和测试集
train\_labels = train\_set
test\_labels = test\_set
决策树分类器
DecisionTreeClassifier(class_weight=None, criterion='entropy', ...)
dt_model.score
0.9773333333333334
dt\_model.predict(test\_set)
预测
array(\[0, 0, 0, 0, 0\])
查看测试集
test_set.head(5)
朴素贝叶斯
naive\_model.fit(train\_set, train_labels)
naive_model.score
0.8866666666666667
随机森林分类器
RandomForestClassifier(max\_depth=2, random\_state=0)
Importance.sort_values
randomforest\_model.score(test\_set,test_labels)
0.8993333333333333
KNN(K-最近邻居)
data.drop(\['Experience' ,'ID'\] , axis = 1).drop(labels= "PersonalLoan" , axis = 1)
train\_set\_dep = data\["PersonalLoan"\]
acc = accuracy\_score(Y\_Test, predicted)
print(acc)
0.9106070713809206
模型比较
for name, model in models:kfold = model\_selection.KFold(n\_splits=10)cv\_results = model\_selection.cross\_val\_score(model, X, y, cv, scoring)# 箱线图算法的比较
plt.figure()
结论
通用银行的目的是将负债客户转变为贷款客户。他们想发起新的营销活动;因此,他们需要有关数据中给出的变量之间的有联系的信息。本研究使用了四种分类算法。从上图可以看出,随机森林 算法似乎 具有最高的精度,我们可以选择它作为最终模型。
数据获取
在下面公众号后台回复“银行数据”,可获取完整数据。
点击文末“阅读原文”
获取全文完整资料。
本文选自《Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户》。
点击标题查阅往期内容
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
用PyTorch机器学习神经网络分类预测银行客户流失模型
R语言用FNN-LSTM假近邻长短期记忆人工神经网络模型进行时间序列深度学习预测4个案例
Python中TensorFlow的长短期记忆神经网络(LSTM)、指数移动平均法预测股票市场和可视化
R语言KERAS用RNN、双向RNNS递归神经网络、LSTM分析预测温度时间序列、 IMDB电影评分情感
Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化
Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析
R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
R语言深度学习:用keras神经网络回归模型预测时间序列数据
Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
MATLAB中用BP神经网络预测人体脂肪百分比数据
Python中用PyTorch机器学习神经网络分类预测银行客户流失模型
R语言实现CNN(卷积神经网络)模型进行回归数据分析
Python使用神经网络进行简单文本分类
R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析
R语言基于递归神经网络RNN的温度时间序列预测
R语言神经网络模型预测车辆数量时间序列
R语言中的BP神经网络模型分析学生成绩
matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
R语言实现拟合神经网络预测和结果可视化
用R语言实现神经网络预测股票实例
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测
python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译
用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类
数据分享|Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户...相关推荐
- Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户
最近我们被客户要求撰写关于银行拉新活动的研究报告,包括一些图形和统计输出. 项目背景:银行的主要盈利业务靠的是贷款,这些客户中的大多数是存款大小不等的责任客户(存款人).银行拥有不断增长的客户.该银行 ...
- 从零开始学Python【38】--朴素贝叶斯模型(实战部分)
[前言] 在<从零开始学Python[37]--朴素贝叶斯模型(理论部分)>中我们详细介绍了朴素贝叶斯算法的基本概念和理论知识,在这一期我们继续介绍该算法的实战案例.将会对高斯贝叶斯.多项 ...
- 朴素贝叶斯详解及中文舆情分析(附代码实践)
作者|杨秀璋 整理|AI科技大本营 本文主要讲述朴素贝叶斯分类算法并实现中文数据集的舆情分析案例,希望这篇文章对大家有所帮助,提供些思路.内容包括: 1.朴素贝叶斯数学原理知识 2.naive_ba ...
- 实现 | 朴素贝叶斯模型算法研究与实例分析
实现 | 朴素贝叶斯模型算法研究与实例分析 (白宁超 2018年9月4日10:28:49) 导读:朴素贝叶斯模型是机器学习常用的模型算法之一,其在文本分类方面简单易行,且取得不错的分类效果.所以很受 ...
- 朴素贝叶斯算法:实现邮件分类
朴素贝叶斯算法:实现邮件分类 注:代码和数据已上传:https://download.csdn.net/download/j__max/10705454 一.实验准备 1.实验内容和目的 使用5000 ...
- 用朴素贝叶斯和SVM进行文本分类
写在前面的感悟: 测试集文件删除一定要shift+delete!!!!!要不然回收站直接爆炸,用几个小时打开,然后再用几个小时清空.文本分类的数据集看似只有几个G那么大,但是架不住文件数量多,导致各种 ...
- 朴素贝叶斯算法实现英文文本分类
目录 1. 作者介绍 2. 朴素贝叶斯算法简介及案例 2.1朴素贝叶斯算法简介 2.2文本分类器 2.3对新闻文本进行文本分类 3. Python 代码实现 3.1文本分类器 3.2 新闻文本分类 参 ...
- 【机器学习】朴素贝叶斯、SVM和数据分布检验分析
[机器学习]朴素贝叶斯.SVM和数据分布检验分析 文章目录 1 朴素贝叶斯 2 SVM2.1 线性可分2.2 最大间隔超平面2.3 SVM 最优化问题 3 数据分布检验方法3.1 数据分布检验3.2 ...
- 机器学习——朴素贝叶斯算法(垃圾邮件分类)
朴素贝叶斯算法介绍以及垃圾邮件分类实现 1.一些数学知识 2.贝叶斯公式 3.朴素贝叶斯算法 (1)介绍 (2)核心思想 (3)朴素贝叶斯算法 (4)拉普拉斯修正 (5)防溢出策略 (6)一般过程 ( ...
最新文章
- PLM(产品生命周期管理)的前世今生
- 自动化测试工具selenium python_自动化测试工具之Selenium(一)-----Selenium的介绍以及安装...
- 第二节:垃圾回收期算法简介
- asp.net权限设置可能导致应用程序无法正常运行(转)
- SAP CRM呼叫中心里link按钮的技术实现
- 人类视觉系统_对人类视觉系统的对抗攻击
- AGC 022 B - GCD Sequence
- Keba常用硬件模块
- 【Go语言】【13】再谈GO语言的结构体
- Java — 【报错】Parameter index out of range (1 number of parameters, which is 0).
- 液压阀的“通”和“位”
- C++运算符过载详解
- 计算机锁屏图片怎么设置方法,电脑锁屏照片怎么设置
- 善待自己 改变命运的N个人生哲理
- 第二工业大学计算机应用大专录取分,2016年上海第二工业大学专科层次依法自主招生各专业分数线...
- Android Wifi文件传输
- 高并发累加器 Striped64
- 01-Empire-Lupin-One vulnhub靶场(ssh2john)
- TI 生态大宇宙 - 波卡 Polkadot
- html输入框只能扫描枪,输入框禁止手动输入,只允许扫描枪
热门文章
- PyTorch学习笔记:nn.LeakyReLU——LeakyReLU激活函数
- 如何开发仿抖音短视频APP源码?
- Q1.ESX不能联网
- 推荐一款非Win7下专用的“任务栏图标收纳”工具——TrayApp(转自:http://www.ibobosky.com/my-quick-start-tool-trayapp.htm)
- 【优秀课设】基于OpenCV-Python的摄像头人脸检测追踪控制系统
- Corda API: Flows
- Cocos大炮的简单模拟实验
- 【论文译文】DeblurGAN
- 110配线架25对线缆线序说明
- 代码随想录_二叉树_leetcode236