手把手教你:个人信贷违约预测模型
系列文章
- 第八章、手把手教你:基于LSTM的股票预测系统
- 第七章、手把手教你:基于深度残差网络(ResNet)的水果分类识别系统
- 第六章、手把手教你:人脸识别的视频打码
目录
- 系列文章
- 一、项目简介
- 二、数据集介绍
- 三、环境安装
- 四、代码介绍
- 1.数据预处理
- 2.数据可视化探索
- 2.1 各特征可视化
- 2.2 贷款金额的情况
- 2.3 贷款金额与分期付款关系
- 2.4 是否还完贷款
- 3.构建模型并训练
- 3.1 朴素贝叶斯
- 3.2 随机森林
- 3.3 逻辑回归
- 4.模型对比
- 五、代码下载地址
一、项目简介
本文主要介绍如何使用python搭建:基于三个经典机器学习算法的个贷违约预测模型。
项目只是用个贷违约预测作为抛砖引玉,其中包含了使用模型进行预测的相关代码。主要功能如下:
- 数据预处理。
- 模型构建及训练,三大模型:朴素贝叶斯、随机森林、逻辑回归。
- 预测违约情况并进行模型评估。
如各位童鞋需要更换训练数据,完全可以根据源码将图像和标注文件更换即可直接运行。
博主也参考过机器学习模型构建的文章,但大多是理论大于方法。很多同学肯定对原理不需要过多了解,只需要搭建出一个预测系统即可。
本文只会告诉你如何快速搭建一个基于个贷违约预测模型并运行,原理的东西可以参考其他博主。
也正是因为我发现网上大多的帖子只是针对原理进行介绍,功能实现的相对很少。
如果您有以上想法,那就找对地方了!
不多废话,直接进入正题!
二、数据集介绍
- 我们将使用个人对个人的借贷网站——借贷俱乐部上面的借贷数据。借贷俱乐部提供关于成功的贷款(被借贷俱乐部和联合贷款人通过的贷款)和失败的贷款(被借贷俱乐部和联合贷款人拒绝的贷款,款项并没有转手)的详尽历史数据。
三、环境安装
本项目开发IDE使用的是:jupyter notebook,大家可以直接csdn搜索安装指南非常多,这里就不再赘述。
因为本项目基于TensorFlow因此需要以下环境:
- pandas
- scikit-learn
- numpy
- matplotlib
四、代码介绍
- 环境安装好后就可以开始愉快的执行代码了。由于代码众多,博客中就不放入最终代码了,有需要的童鞋可以在【代码下载地址】下载所有代码。
1.数据预处理
- 首先我们将读入的数据做一些特征选择和数据清洗。
- 字段信息:
- loan_amnt:贷款
- term:账期
- int_rate:国际汇率
- installment:分期付款
- loan_status:贷款状况
- 等等
load_data_clean=load_data[['loan_amnt','funded_amnt','term','int_rate','installment','emp_length','dti','annual_inc','total_pymnt','total_pymnt_inv','total_rec_int','loan_status']]
del load_data
#注意输入的变量必须是量化的值,不能是字符串
#数据清洗主要做数据类型的转换,以及处理缺失数据
#采用针对矩阵的元素的函数实现
import re #正则表达式的包
def extract_number(string):num=re.findall('\d+',str(string)) if len(num)>0:return int(num[0])else:return 0;
load_data_clean.emp_length=load_data_clean.emp_length.apply(extract_number)
load_data_clean.head()
- 处理完后数据情况:
2.数据可视化探索
2.1 各特征可视化
- 可以看到annual_inc特征波动比较大。
2.2 贷款金额的情况
- 可以看到大部分人的贷款金额在:5k-15k这个区间范围内。
2.3 贷款金额与分期付款关系
- 这里将:loan_amnt:贷款金额,installment:分期付款金额进行关联分析。
- 可以看到贷款与分期付款 ,相关性较强,我们后续可以考虑将这2个特征合成一个,以提高模型的准确性和效率。
2.4 是否还完贷款
- 可以看到数据中是否足额按时还完贷款所占的比率。
3.构建模型并训练
- 完成上述数据处理后我们构建三个不同的模型进行训练并预测。
3.1 朴素贝叶斯
- 构建模型并训练:
gnb_model=GaussianNB()gnb_model.fit(X_train,Y_train)# 训练集#模型预测可以给出概率的结果train_probs=gnb_model.predict_proba(X_train)#返回概率最高的结果train_predict=gnb_model.predict(X_train)# 测试集#模型预测可以给出概率的结果test_probs=gnb_model.predict_proba(X_test)#返回概率最高的结果test_predict=gnb_model.predict(X_test)
- 模型预测得分:
- 这里解释一下,模型得分的情况。可以看到训练集accuracy_score(准确率)得分:0.88。测试集accuracy_score(准确率)得分:0.87。
- 下方Classification report,是2种不同类别的混淆矩阵,分别输出了每个类别的精确率、召回率和F1-score的得分。
- ROC曲线如下:
3.2 随机森林
- 构建模型并训练:
from sklearn import datasets,svm,metrics,model_selection,preprocessing
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
# 实例化随机森林
rfc=RandomForestClassifier()
# 调参参数设置
rf_param_grid = {'n_estimators':[100,200,500], 'min_samples_split':[2,3,5,10], 'min_samples_leaf':[4,6,10], 'max_depth':[10,50]}
rf_grid = model_selection.GridSearchCV(rfc, rf_param_grid, cv=5, n_jobs=12, verbose=1, scoring='accuracy')
# 训练模型
rf_grid.fit(X_train, Y_train)
- 模型预测得分:
- 同理,随机森林的训练集准确率得分:0.987。测试集准确率得分:0.976
- 上述2个模型的ROC曲线:
3.3 逻辑回归
- 逻辑回归其实是一个分类算法,因此我们也可以用在预测用户是否可能违约上。
- 模型构建及训练:
from sklearn.linear_model import LogisticRegression
#构建模型参数
LGR = LogisticRegression(penalty='l2', multi_class='multinomial',solver="newton-cg",n_jobs=12)
# 训练模型
LGR.fit(X_train, Y_train)
- 模型预测得分:
4.模型对比
- 因为我们知道ROC曲线所占的面积越大,说明模型的效果会越好,根据上图,红色线条的模型效果是最好的,因此:逻辑回归的模型在这个数据集中应用的效果是最佳的。
五、代码下载地址
由于项目代码量和数据集较大,感兴趣的同学可以直接下载代码,使用过程中如遇到任何问题可以在评论区进行评论,我都会一一解答。
代码下载:
- 【代码分享】手把手教你:个人信贷违约预测模型
手把手教你:个人信贷违约预测模型相关推荐
- 不用代码!手把手教你Excel构建数据分析预测模型!
RAM DEWANI | 作者 VK | 编译 https://juejin.im/post/6845166891640553479 你可以在Excel中执行建模,只需几个步骤. 下面是一个教程,介绍 ...
- R数据分析:跟随top期刊手把手教你做一个临床预测模型
临床预测模型也是大家比较感兴趣的,今天就带着大家看一篇临床预测模型的文章,并且用一个例子给大家过一遍做法. 这篇文章来自护理领域顶级期刊的文章,文章名在下面 Ballesta-Castillejos ...
- 手把手教你:基于TensorFlow的语音识别系统
系列文章 第十章.手把手教你:基于Django的用户画像可视化系统 第九章.手把手教你:个人信贷违约预测模型 第八章.手把手教你:基于LSTM的股票预测系统 目录 系列文章 一.项目简介 二.语音数据 ...
- 手把手教你:岩石样本智能识别系统
系列文章 第十一章.手把手教你:基于TensorFlow的语音识别系统 第十章.手把手教你:基于Django的用户画像可视化系统 第九章.手把手教你:个人信贷违约预测模型 目录 系列文章 一.项目简介 ...
- 手把手教你:基于Django的用户画像可视化系统
系列文章 第九章.手把手教你:个人信贷违约预测模型 第八章.手把手教你:基于LSTM的股票预测系统 第七章.手把手教你:基于深度残差网络(ResNet)的水果分类识别系统 目录 系列文章 一.项目简介 ...
- python 靶心_手把手教你使用Python实战反欺诈模型|原理+代码
原标题:手把手教你使用Python实战反欺诈模型|原理+代码 作者 | 萝卜 来源 | 早起Python(ID: zaoqi-python) 本文将基于不平衡数据,使用Python进行 反欺诈模型数据 ...
- 手把手实操系列|信贷风控中的额度管理和额度模型设计
序言: 如今的个人信贷行业步入合规发展阶段后,额度管理和差异化定价成为金融机构是否能最大化盈利的核心竞争力,其中额度管理包括贷前阶段的授信额度,贷中阶段的提额,降额等,本文将着重讲解这两个阶段的额度设 ...
- 手把手教你用Python轻松玩转SQL注入
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 山有木兮木有枝,心悦君兮君不知. ...
- 手把手教你:基于LSTM的股票预测系统
系列文章 第七章.手把手教你:基于深度残差网络(ResNet)的水果分类识别系统 第六章.手把手教你:人脸识别的视频打码 第五章.手把手教你:基于深度学习的滚动轴承故障诊断 目录 系列文章 一.项目简 ...
- python代码在线回归中怎么运行_手把手教你用Python进行回归(附代码、学习资料)...
原标题:手把手教你用Python进行回归(附代码.学习资料) 作者: GURCHETAN SINGH翻译:张逸校对:丁楠雅 本文共5800字,建议阅读8分钟. 本文从线性回归.多项式回归出发,带你用P ...
最新文章
- POJ2955Brackets[区间DP]
- 淡谈泛型约束T(转)
- SLAM学习--常用数据集
- vue2.0框架认识
- 简述python的特性_Python的特性概要
- java 类 加载 初始化_java中类的初始化和加载
- Discuz素材资源下载官网门户+自带论坛 整站源码+带后台+带数据库
- leetcode —— 31. 下一个排列
- OpenCV实现图像翻转
- vue-router 源码:实现一个简单的 vue-router
- PPT使用技巧——绘制圆角曲线
- 基于双二阶广义积分器(DSOGI)的软件锁相环需求的根源及s域仿真
- 桑拿锁技术升级:桑拿手牌复制休矣!
- 软件质量的定义以及相关理论
- NOI 4.5 动态规划 1980: 陪审团的人选
- 计算机二级c 在线模拟考试,全国计算机等级考试二级C考试模拟题
- 十进制转二进制,二进制转十进制的函数代码
- 大数据量高并发的数据库优化(转载)
- mysql漏洞_应用CVE: 最新的Mysql高危漏洞介绍
- 电脑突然无法识别无线网络