原文链接: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的客户支出更高。然而,承受了集体贷款的客户的收入水平雷同
推论 :从上图能够看出,没有集体贷款的客户和领有集体贷款的客户的抵押贷款较高。
察看 :大多数没有贷款的客户都有证券账户
察看:家庭人数对集体贷款没有任何影响。然而仿佛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\_settest\_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()
论断
通用银行的目标是将负债客户转变为贷款客户。他们想发动新的营销流动;因而,他们须要无关数据中给出的变量之间的有分割的信息。本钻研应用了四种分类算法。从上图能够看出,随机森林 算法仿佛 具备最高的精度,咱们可
最受欢迎的见解
1.从决策树模型看员工为什么到职
2.R语言基于树的办法:决策树,随机森林
3.python中应用scikit-learn和pandas决策树
4.机器学习:在SAS中运行随机森林数据分析报告
5.R语言用随机森林和文本开掘进步航空公司客户满意度
6.机器学习助推快时尚精准销售工夫序列
7.用机器学习辨认一直变动的股市情况——隐马尔可夫模型的利用
8.python机器学习:举荐零碎实现(以矩阵合成来协同过滤)
9.python中用pytorch机器学习分类预测银行客户散失