论文复现-基于决策树算法构建银行贷款审批预测模型(金融风控场景)
作者Toby,来源公众号:Python风控模型,基于决策树算法构建银行贷款审批预测模型
目录
1.金融风控论文复现
2.项目背景介绍
3.决策树介绍
4.数据集介绍
5.合规风险提醒
6.技术工具
7.实验过程
7.1导入数据
7.2数据预处理
7.3数据可视化
7.4特征工程
7.5构建模型
7.6模型评估
8.总结
1.金融风控论文复现
今天发现有篇经典期刊下载量非常大,有5000多条。Toby老师尝试简单复现一下。
2.项目背景介绍
银行贷款审批预测模型是一种基于机器学习算法的应用,旨在帮助银行提高贷款审批的效率和准确性。该模型利用客户的个人信息、财务状况和贷款申请信息等数据,预测客户的贷款审批结果,即是否批准该客户的贷款申请。
背景介绍:在传统的银行贷款审批流程中,工作人员需要手动审核客户提交的贷款申请资料,这一过程既费时又容易出错。为了提高审批效率、降低风险,许多银行开始引入机器学习模型来辅助贷款审批决策。这些模型可以根据历史数据和客户信息,快速而准确地预测贷款的批准结果,帮助银行更好地管理风险,提高贷款审批的效率和客户体验。
银行贷款审批预测模型的建立需要一定数量的历史贷款数据和客户信息作为训练集,以便模型学习客户的贷款偿还行为和审批决策规律。通过合理地处理和分析这些数据,建立起贷款审批预测模型,银行可以实现更智能化、高效化的贷款审批流程,为客户提供更优质的金融服务。
3.决策树算法介绍
决策树是一种常用的机器学习算法,在分类和回归问题中都有广泛的应用。它通过一系列的规则和条件对数据进行划分,最终形成一棵树状的结构,每个节点表示一个特征属性的判断条件,每个叶子节点表示一个分类结果或回归数值。
下面是决策树算法的主要特点和工作流程:
特点:
-
简单直观:决策树易于解释和理解,可以帮助人们了解数据特征之间的关系。
-
非参数方法:决策树在建模过程中不需要假设数据的分布,适用于各种类型的数据。
-
可处理多类别问题:决策树可以处理多类别分类问题,也可以用于回归问题。
工作流程:
-
特征选择:根据不同的特征属性选择一个最优的特征进行数据划分。
-
数据划分:根据特征的取值将数据集划分成不同的子集。
-
递归构建:对每个子集递归地重复上述过程,直到满足停止条件(如节点中的样本都属于同一类别)。
-
剪枝:为了避免过拟合,可以通过剪枝手段对决策树进行优化。
决策树算法通过树状结构直观地描述了数据特征之间的关系,可以有效地处理分类和回归问题。然而,决策树算法也存在容易过拟合的问题,因此在实际应用中常常需要进行适当的调参和优化以提高模型的泛化能力。
4.数据集介绍
"Property Loan"(房屋贷款)数据集通常用于贷款审批预测模型的训练和测试。该数据集包含了一些客户的个人信息和贷款申请信息,以及最终的贷款批准结果,是一个典型的二分类问题数据集。
通常,"Property Loan"数据集可能包含以下类型的特征信息:
-
Gender(性别):客户的性别,可以是男性或女性。
-
Marital Status(婚姻状况):客户的婚姻状况,如已婚、未婚、离异等。
-
Applicant Income(申请人收入):申请人的收入水平。
-
Loan Amount(贷款金额):客户申请的贷款金额。
-
Credit History(信用历史):客户的信用历史记录,通常是二分类特征,表示有或没有信用记录。
-
Property Area(房产所在区域):房产所在的区域,如城市、郊区等。
同时,数据集中的标签(Label)通常是 Loan Approval Status(贷款批准状态),即客户的贷款申请是否最终被批准。
通过"Property Loan"数据集,银行可以利用客户的个人信息和贷款申请信息,训练贷款审批预测模型,实现快速有效地预测客户的贷款审批结果。这有助于提高银行的运营效率,降低风险,并为客户提供更高效的金融服务体验。
5.合规风险提醒
根据巴塞尔协议和国内金融办法规。各位建模人员请注意,对于敏感的金融数据和贷款审批模型的构建,需要遵守相关的法律和规定,并确保数据隐私和安全。建议在实际操作中谨慎处理和使用这些数据,以保护客户的隐私和信息安全。
6.技术工具
Python版本:4
代码编辑器:jupyter notebook/spyder/miniconda
具体安装流程,请参考Toby老师之前文章《Anaconda下载和安装指南》
7.建模实验过程
以下是一个简单的示例代码,展示了如何使用Python中的scikit-learn库构建决策树模型进行银行贷款审批预测:
7.1导入数据
# 导入必要的库
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
# 读取包含客户信息和贷款审批结果的数据集
data = pd.read_csv('loan_data.csv')
7.2描述性统计
通过以上代码,您可以轻松地获取"Property Loan"数据集的基本描述性统计信息,包括各个数值型特征的统计指标(如均值、方差、最大值、最小值等)以及类别型特征的频数统计。
import pandas as pd
# 假设数据集已加载到名为 property_loan_data 的 DataFrame 中
# 显示数据集的基本统计信息
print(property_loan_data.describe())
# 计算每个类别型特征的频数
categorical_features = ['Gender', 'Marital Status', 'Credit History', 'Property Area']
for feature in categorical_features:
print(property_loan_data[feature].value_counts())
7.3数据预处理
对于"Property Loan"数据集的数据预处理,常见的步骤包括缺失值处理、特征编码、数据标准化等。以下是一个简单的数据预处理示例代码,假设您已经加载了"Property Loan"数据集到名为property_loan_data
的DataFrame中:
import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
# 假设数据集已加载到名为 property_loan_data 的 DataFrame 中
# 处理缺失值
imputer = SimpleImputer(strategy='mean') # 使用均值填充缺失值
property_loan_data['Loan Amount'] = imputer.fit_transform(property_loan_data[['Loan Amount']])
# 特征编码
label_encoder = LabelEncoder()
property_loan_data['Gender'] = label_encoder.fit_transform(property_loan_data['Gender'])
property_loan_data['Marital Status'] = label_encoder.fit_transform(property_loan_data['Marital Status'])
property_loan_data['Property Area'] = label_encoder.fit_transform(property_loan_data['Property Area'])
# 数据标准化
scaler = StandardScaler()
property_loan_data[['Applicant Income', 'Loan Amount']] = scaler.fit_transform(property_loan_data[['Applicant Income', 'Loan Amount']])
# 打印处理后的数据集
print(property_loan_data.head())
在这段代码中,我们演示了如何使用SimpleImputer处理缺失值、使用LabelEncoder进行特征编码、以及使用StandardScaler进行数据标准化。这些步骤有助于准备数据用于机器学习模型的训练。
7.4数据可视化
以下是一个简单的用于可视化"Property Loan"(房屋贷款)数据集的Python代码示例,借助matplotlib和seaborn库来实现数据可视化:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 假设数据集已加载到名为 property_loan_data 的 DataFrame 中
# 柱状图示例:显示贷款批准状态的分布
sns.countplot(x='Loan Approval Status', data=property_loan_data)
plt.title('Loan Approval Status Distribution')
plt.show()
# 散点图示例:显示申请人收入与贷款金额之间的关系
plt.figure(figsize=(8, 6))
sns.scatterplot(x='Applicant Income', y='Loan Amount', hue='Loan Approval Status', data=property_loan_data)
plt.title('Applicant Income vs. Loan Amount')
plt.xlabel('Applicant Income')
plt.ylabel('Loan Amount')
plt.show()
# 箱线图示例:显示贷款金额在不同贷款批准状态下的分布
plt.figure(figsize=(8, 6))
sns.boxplot(x='Loan Approval Status', y='Loan Amount', data=property_loan_data)
plt.title('Loan Amount Distribution by Loan Approval Status')
plt.xlabel('Loan Approval Status')
plt.ylabel('Loan Amount')
plt.show()
这些示例代码将帮助您快速可视化"Property Loan"数据集中的一些重要特征和关系,有助于更好地理解数据和可能的模式。
7.5数据划分
# 提取特征和目标变量
X = data.drop('Loan_Status', axis=1)
y = data['Loan_Status']
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
7.6建模
# 构建决策树分类器模型
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
7.7预测
# 在测试集上进行预测
y_pred = clf.predict(X_test)
7.8模型验证
# 评估模型准确率
accuracy = accuracy_score(y_test, y_pred)
print('模型准确率: {:.2f}%'.format(accuracy * 100))
在这段代码中,首先我们导入了需要的库,并读取包含客户信息和贷款审批结果的数据集。然后提取特征和目标变量,并进行训练集和测试集的划分。接着我们构建了决策树分类器模型,并在测试集上进行预测,最后通过准确率评估模型的性能。
混淆矩阵结果
模型准确率整体还不错,有0.82,对逾期的f1分数达到0.89,非常高。当然这是前期快速预测模型的实验结论。Toby老师通过后期模型调优可以显著提升模型性能。
confusionMatrix混淆矩阵是统计学里比较难懂概念。混淆矩阵包含accuracy,recall,precision,f-measure四个指标。
为了让各位学员不再混淆,我用一图读懂混淆矩阵包含accuracy,recall(也叫sensitivity),precision,f-measure四个指标。
更多相关知识请参考Toby老师之前写的文章《confusion matrix混淆矩阵图谱
》
8.总结
银行贷款审批预测模型项目总结如下:
-
项目背景: 该项目旨在开发一个贷款审批预测模型,以帮助银行更高效地评估贷款申请,并降低坏账率。
-
数据收集与清洗: 数据集包括贷款申请人的个人信息、财务信息等。在收集数据后,进行数据清洗工作,处理缺失值和异常值。
-
特征工程: 对数据进行特征工程处理,包括特征选择、特征变换等,以提取对预测目标最有影响的特征。
-
模型选择与训练: 选择合适的机器学习模型,如逻辑回归、随机森林等,进行模型训练,并通过交叉验证进行参数调优。
-
模型评估与调优: 使用评价指标如准确率、精确率、召回率、F1值等对模型进行评估,根据评估结果进行模型调优。
-
部署与监控: 将训练好的模型部署至实际环境中,与银行的贷款系统进行集成,并建立监控机制,定期检查模型性能。
-
结果展示与总结: 展示模型的预测结果,对模型的准确性和稳定性进行总结,并提出后续优化建议和改进方向。
通过以上步骤,银行可以借助贷款审批预测模型提升审批效率,降低风险,提高客户体验。Toby老师利用Property Loan数据集为大家演示了一下大致流程。以后有时间再继续优化丰富此文章。
版权声明:文章来自公众号(python风控模型),未经许可,不得抄袭。遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
相关文章:

论文复现-基于决策树算法构建银行贷款审批预测模型(金融风控场景)
作者Toby,来源公众号:Python风控模型,基于决策树算法构建银行贷款审批预测模型 目录 1.金融风控论文复现 2.项目背景介绍 3.决策树介绍 4.数据集介绍 5.合规风险提醒 6.技术工具 7.实验过程 7.1导入数据 7.2数据预处理 7.3数据可…...
力扣225题解析:使用队列实现栈的三种解法(Java实现)
引言 在算法和数据结构中,如何用队列实现栈是一个常见的面试题和实际应用问题。本文将探讨力扣上的第225题,通过不同的方法来实现这一功能,并分析各种方法的优劣和适用场景。 问题介绍 力扣225题目要求我们使用队列实现栈的下列操作&#…...
网络协议与标准
协议: 语法 ;计算机的算法,二进制 语义 ;不要有出现歧义的 同步 ; 同步还原信息,收发同步 标准: ISO(国际标准化组织) IEEE(电气和电子工程师学会) 局域网技术 一.协议…...

154. 寻找旋转排序数组中的最小值 II(困难)
154. 寻找旋转排序数组中的最小值 II 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转:154. 寻找旋转排序数组中的最小值 II 2.详细题解 该题是153. 寻找旋转排序数组中的最小值的进阶题,在153. 寻找旋转排序数组中的最小值…...
5、MP4解复用---AAC+H264
MP4 MP4同样是一种容器格式,是由一个一个Box组成,每个Box又分为Header与Data,Data又包含很多子Box,具体的MP4文件结构也看过,内部Box结构比较复杂,一般不写MP4解释器的话,Box结构不用了解太细&a…...

计算样本之间的相似度
文章目录 前言一、距离度量1.1 欧几里得距离(Euclidean Distance)1.2 曼哈顿距离(Manhattan Distance)1.3 切比雪夫距离(Chebyshev Distance)1.4 闵可夫斯基距离(Minkowski Distance)…...

2-5 softmax 回归的简洁实现
我们发现通过深度学习框架的高级API能够使实现线性回归变得更加容易。 同样,通过深度学习框架的高级API也能更方便地实现softmax回归模型。 本节如在上节中一样, 继续使用Fashion-MNIST数据集,并保持批量大小为256。 import torch from torc…...

我 17 岁创业,今年 20 岁,月入 70 万,全靠低代码
想象一下,当你还在高中的课桌前埋头苦读时,有人告诉你三年后你将成为一家年收入超过 100 万美元的科技公司的创始人。 听起来是不是像天方夜谭? 但对于 20 岁的小伙子 Jacob Klug 来说,这就是他的真实人生。 在大多数同龄人还在为…...

【Python】已解决:urllib.error.HTTPError: HTTP Error 403: Forbidden
文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:urllib.error.HTTPError: HTTP Error 403: Forbidden 一、分析问题背景 在使用Python的urllib库中的urlopen或urlretrieve函数下载文件时,有时会遇到…...

昇思12天
FCN图像语义分割 1. 主题和背景 FCN是由UC Berkeley的Jonathan Long等人于2015年提出的,用于实现图像的像素级预测。 2. 语义分割的定义和重要性 语义分割是图像处理和机器视觉中的关键技术,旨在对图像中的每个像素进行分类。它在很多领域有重要应用…...

【postgresql】 基础知识学习
PostgreSQL是一个高度可扩展的开源对象关系型数据库管理系统(ORDBMS),它以其强大的功能、灵活性和可靠性而闻名。 官网地址:https://www.postgresql.org/ 中文社区:文档目录/Document Index: 世界上功能最强大的开源…...

按键控制LED流水灯模式定时器时钟
目录 1.定时器 2. STC89C52定时器资源 3.定时器框图 4. 定时器工作模式 5.中断系统 1)介绍 2)流程图:编辑 3)STC89C52中断资源 4)定时器和中断系统 5)定时器的相关寄存器 6.按键控制LED流水灯模…...

【Docker安装】OpenEuler系统下部署Docker环境
【Docker安装】OpenEuler系统下部署Docker环境 前言一、本次实践介绍1.1 本次实践规划1.2 本次实践简介二、检查本地环境2.1 检查操作系统版本2.2 检查内核版本2.3 检查yum仓库三、卸载Docker四、部署Docker环境4.1 配置yum仓库4.2 检查可用yum仓库4.3 安装Docker4.4 检查Docke…...
小程序 使用 UI 组件 Vant Weapp 、vant组件样式覆盖
注意:使用vant 包,需要把app.json 中 的"style:v2" 这句去掉 不然会出现样式混乱的问题 Vant Weapp组件库的使用 参考官网 vant官网 Vant Weapp 组件样式覆盖 Vant Weapp 基于微信小程序的机制,为开发者提供了 3 种修改组件样式…...
(接上一篇)前端弄一个变量实现点击次数在前端页面实时更新
实现点击次数在前端页面实时更新,确实需要在前端维护一个变量来存储当前的点击次数。这个变量通常在Vue组件的data选项中定义,并在组件的生命周期方法或事件处理函数中更新。 以下是实现这一功能的基本步骤: 定义变量:在Vue组件的…...
迭代器模式在金融业务中的应用及其框架实现
引言 迭代器模式(Iterator Pattern)是一种行为设计模式,它提供了一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。在金融业务中,迭代器模式可以用于遍历复杂的数据结构,如交易…...

浏览器插件利器-allWebPluginV2.0.0.14-stable版发布
allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX插件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持谷歌、火狐等浏…...

机器学习训练之使用静态图加速
前言 MindSpore有两种运行模式:动态图模式和静态图模式。默认情况下是动态图模式,也可以手工切换为静态图模式。 动态图模式 动态图的特点是计算图的构建和计算同时发生,符合Python的解释执行方式。在调试模型时较为方便,能够实…...

数据结构速成--图
由于是速成专题,因此内容不会十分全面,只会涵盖考试重点,各学校课程要求不同 ,大家可以按照考纲复习,不全面的内容,可以看一下小编主页数据结构初阶的内容,找到对应专题详细学习一下。 目录 …...

昇思25天学习打卡营第12天|FCN图像语义分割
文章目录 昇思MindSpore应用实践基于MindSpore的FCN图像语义分割1、FCN 图像分割简介2、构建 FCN 模型3、数据预处理4、模型训练自定义评价指标 Metrics 5、模型推理结果 Reference 昇思MindSpore应用实践 本系列文章主要用于记录昇思25天学习打卡营的学习心得。 基于MindSpo…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...

网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...