关于数据挖掘:数据分享Python决策树随机森林朴素贝叶斯KNNK最近邻居分类分析银行拉新活动挖掘潜在贷款客户附代码数据

31次阅读

共计 4130 个字符,预计需要花费 11 分钟才能阅读完成。

原文链接: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 神经网络分类

正文完
 0