机器学习模型预测贷款审批

机器学习模型预测贷款审批
作者:i阿极
作者简介:数据分析领域优质创作者、多项比赛获奖者:博主个人首页
😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍
📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪
大家好,我i阿极。喜欢本专栏的小伙伴,请多多支持
| 专栏案例:机器学习案例 |
|---|
| 机器学习(一):线性回归之最小二乘法 |
| 机器学习(二):线性回归之梯度下降法 |
| 机器学习(三):基于线性回归对波士顿房价预测 |
| 机器学习(四):基于KNN算法对鸢尾花类别进行分类预测 |
| 机器学习(五):基于KNN模型对高炉发电量进行回归预测分析 |
| 机器学习(六):基于高斯贝叶斯对面部皮肤进行预测分析 |
| 机器学习(七):基于多项式贝叶斯对蘑菇毒性分类预测分析 |
| 机器学习(八):基于PCA对人脸识别数据降维并建立KNN模型检验 |
| 机器学习(十四):基于逻辑回归对超市销售活动预测分析 |
| 机器学习(十五):基于神经网络对用户评论情感分析预测 |
| 机器学习(十六):线性回归分析女性身高与体重之间的关系 |
| 机器学习(十七):基于支持向量机(SVM)进行人脸识别预测 |
| 机器学习(十八):基于逻辑回归对优惠券使用情况预测分析 |
| 机器学习(十九):基于逻辑回归对某银行客户违约预测分析 |
| 机器学习(二十):LightGBM算法原理(附案例实战) |
| 机器学习(二十一):基于朴素贝叶斯对花瓣花萼的宽度和长度分类预测 |
| 机器学习(二十二):基于逻辑回归(Logistic Regression)对股票客户流失预测分析 |
文章目录
- 机器学习模型预测贷款审批
- 1、前言
- 2、导入库和数据集
- 3、数据预处理和可视化
- 4、分割数据集
- 5、模型训练与评估
- 总结
1、前言
贷款是现代世界的主要需求。仅此一点,银行就获得了总利润的主要部分。它有利于学生管理他们的教育和生活费用,也有利于人们购买任何类型的奢侈品,如房子、汽车等。
但在决定申请人的个人资料是否与获得贷款相关时。银行必须照顾很多方面。
因此,在这里我们将使用Python机器学习来简化他们的工作,并使用婚姻状况、教育、申请人收入、信用记录等关键特征来预测候选人的个人资料是否相关。
该数据集包含 13 个特征:
| 1 | 贷款 | 唯一的ID |
|---|---|---|
| 2 | 性别 | 申请人性别 男/女 |
| 3 | 已婚 | 申请人的婚姻状况,值为是/否 |
| 4 | 家属 | 它告诉申请人是否有任何家属。 |
| 5 | 教育 | 它将告诉我们申请人是否已毕业。 |
| 6 | 自雇 | 这定义了申请人是自营职业者,即是/否 |
| 7 | 申请人收入 | 申请人收入 |
| 8 | 共同申请人收入 | 共同申请人的收入 |
| 9 | 贷款额度 | 贷款金额(万) |
| 10 | 贷款金额_期限 | 贷款期限(月) |
| 11 | 信用_历史 | 个人还款信用记录 |
| 12 | 物业_面积 | 房产面积,即农村/城市/半城市 |
| 13 | 贷款状态 | 贷款状态是否已批准,即 Y- 是、N- 否 |
2、导入库和数据集
首先我们必须导入库:
Pandas – 加载数据框
Matplotlib – 可视化数据特征,即条形图
Seaborn – 使用热图查看特征之间的相关性
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns data = pd.read_csv("LoanApprovalPrediction.csv")
导入数据集后,让我们使用以下命令查看它。
data.head(5)

3、数据预处理和可视化
获取对象数据类型的列数。
obj = (data.dtypes == 'object')
print("Categorical variables:",len(list(obj[obj].index)))

由于 Loan_ID 是完全唯一的,并且与任何其他列都不相关,因此我们将使用 删除它。drop()函数。
data.drop(['Loan_ID'],axis=1,inplace=True)
使用barplot可视化列中的所有唯一值。这将简单地显示根据我们的数据集哪个值占主导地位。
obj = (data.dtypes == 'object')
object_cols = list(obj[obj].index)
plt.figure(figsize=(18,36))
index = 1for col in object_cols: y = data[col].value_counts() plt.subplot(11,4,index) plt.xticks(rotation=90) sns.barplot(x=list(y.index), y=y) index +=1

由于所有分类值都是二进制的,因此我们可以对所有此类列使用标签编码器,并且这些值将更改为int数据类型。
from sklearn import preprocessing label_encoder = preprocessing.LabelEncoder()
obj = (data.dtypes == 'object')
for col in list(obj[obj].index): data[col] = label_encoder.fit_transform(data[col])
再次检查对象数据类型列。让我们看看是否还有剩余。
obj = (data.dtypes == 'object')
print("Categorical variables:",len(list(obj[obj].index)))
使用热力图显示了贷款金额和申请人收入之间的相关性。
plt.figure(figsize=(12,6)) sns.heatmap(data.corr(),cmap='BrBG',fmt='.2f', linewidths=2,annot=True)

明 Credit_History 对 Loan_Status 有很大影响。
现在我们将使用Catplot可视化申请人的性别和婚姻状况图。
sns.catplot(x="Gender", y="Married", hue="Loan_Status", kind="bar", data=data)

现在我们将使用以下代码找出数据集中是否存在缺失值。
for col in data.columns: data[col] = data[col].fillna(data[col].mean()) data.isna().sum()

由于没有缺失值,那么我们必须继续进行模型训练。
4、分割数据集
from sklearn.model_selection import train_test_split X = data.drop(['Loan_Status'],axis=1)
Y = data['Loan_Status']
X.shape,Y.shape X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.4, random_state=1)
X_train.shape, X_test.shape, Y_train.shape, Y_test.shape
((358, 11), (240, 11), (358,), (240,))
5、模型训练与评估
由于这是一个分类问题,因此我们将使用这些模型:
K邻居分类器
随机森林分类器
支持向量分类器 (SVC)
逻辑回归
为了预测准确性,我们将使用scikit-learn库中的准确性评分函数。
from sklearn.neighbors import KNeighborsClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC
from sklearn.linear_model import LogisticRegression from sklearn import metrics knn = KNeighborsClassifier(n_neighbors=3)
rfc = RandomForestClassifier(n_estimators = 7, criterion = 'entropy', random_state =7)
svc = SVC()
lc = LogisticRegression() for clf in (rfc, knn, svc,lc): clf.fit(X_train, Y_train) Y_pred = clf.predict(X_train) print("Accuracy score of ", clf.__class__.__name__, "=",100*metrics.accuracy_score(Y_train, Y_pred))
输出:
Accuracy score of RandomForestClassifier = 98.04469273743017
Accuracy score of KNeighborsClassifier = 78.49162011173185
Accuracy score of SVC = 68.71508379888269
Accuracy score of LogisticRegression = 80.44692737430168
对测试集的预测:
for clf in (rfc, knn, svc,lc): clf.fit(X_train, Y_train) Y_pred = clf.predict(X_test) print("Accuracy score of ", clf.__class__.__name__,"=", 100*metrics.accuracy_score(Y_test, Y_pred))
输出:
Accuracy score of RandomForestClassifier = 82.5
Accuracy score of KNeighborsClassifier = 63.74999999999999
Accuracy score of SVC = 69.16666666666667
Accuracy score of LogisticRegression = 80.83333333333333
随机森林分类器给出了最好的准确度,测试数据集的准确度得分为 82.5%。为了获得更好的结果,还可以使用Bagging和Boosting等集成学习技术。
总结
在这里我们将使用Python机器学习来简化他们的工作,并使用婚姻状况、教育、申请人收入、信用记录等关键特征来预测候选人的个人资料是否相关。
不要错过驾驭数据革命浪潮的机会!每个行业都在利用数据的力量来攀登新的高度。磨练你的技能,成为 21 世纪最热门趋势的一部分。
📢文章下方有交流学习区!一起学习进步!💪💪💪
📢首发CSDN博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗
相关文章:
机器学习模型预测贷款审批
机器学习模型预测贷款审批 作者:i阿极 作者简介:数据分析领域优质创作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论&…...
Linux实验记录:使用firewalld
前言: 本文是一篇关于Linux系统初学者的实验记录。 参考书籍:《Linux就该这么学》 实验环境: VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注: RHEL8系统中集成了多款防火墙管理工具…...
Vue之初识Vue CLI 脚手架
Vue CLI 是Vue 官方提供的一个全局命令工具 可以帮助我们快速创建一个开发Vue项目的标准化基础架子。【集成了webpack配置】 脚手架有什么好处? 1.开箱即用,零配置 2.内置 babel 等工具 3.标准化 使用步骤: 1.全局安装(一次):yarn globaladd vue/cli …...
[Tcpdump] 网络抓包工具使用教程
往期回顾 海思 tcpdump 移植开发详解海思 tcpdump 移植开发详解 前言 上一节,我们已经讲解了在海思平台如何基于静态库生成 tcpdump 工具,本节将作为上一节的拓展内容。 一、tcpdump 简介 「 tcpdump 」是一款强大的网络抓包工具,它基于…...
MongoDB常用命令
3.1 案例需求 存放文章评论的数据存放到MongoDB中,数据结构参考如下: 数据库:articledb 3.2 数据库操作 3.2.1 选择和创建数据库 选择和创建数据库的语法格式: use 数据库名称 如果数据库不存在则自动创建,例如&a…...
强敌环伺:金融业信息安全威胁分析——整体态势
从早期的Zeus和其他以银行为目标的特洛伊木马程序,到现在的大规模分布式拒绝服务(DDoS)攻击,再到新颖的钓鱼攻击和勒索软件,金融服务业已成为遭遇网络犯罪威胁最严重的行业之一。金融服务业的重要性不言而喻࿰…...
FreeRTOS简介
一 FreeRTOS简介 实时操作系统(Real-Time Operating System,RTOS)是一种专门设计用于处理实时任务的操作系统。它的主要作用是提供具有严格时间约束的任务调度和资源管理,以满足实时系统对时间的要求。 可分为硬实时和软实时&am…...
51单片机点灯
51单片机点灯 1.点亮LED灯 #include "reg52.h"sbit ledOne P3^7;void main() {//灯亮,给一个P3.7低电平ledOne 0; }给LED1对应标号的P3^7一个低电平,就能点亮LED灯2.LED灯闪烁 #include "reg52.h"sbit ledOne P3^7;void Delay…...
sql注入之union联合注入
一、Union注入 联合查询注入是联合两个表进行注入攻击,使用关键词 union select 对两个表进行联合查询。两个表的字段数要相同,不然会出现报错。列数相同 union 特性是显示两张表 我们就可以吧第一个参数变为------负--的 或者不存在的值 就行了 显示就…...
activiti解决实现ExecutionListener spring 自动注入@Autowired为null问题
在 Activiti 中,当使用 ExecutionListener 时,Spring 的自动注入机制(例如 Autowired)可能无法正常工作。这是因为 ExecutionListener 是由 Activiti 管理的,并不是由 Spring 管理的,所以无法通过 Autowire…...
【Lazy ORM 整合druid 实现mysql监控】
Lazy ORM 整合druid 实现mysql监控 JDK 17 Lazy ORM框架地址 up、up欢迎start、issues 当前项目案例地址 框架版本描述spring-boot3.0.7springboot框架wu-framework-web1.2.2-JDK17-SNAPSHOTweb容器Lazy -ORM1.2.2-JDK17-SNAPSHOTORMmysql-connector-j8.0.33mysql驱动druid-…...
【Deeplabv3+】Ubutu18.04中使用pytorch复现Deeplabv3+第三步)-----CityscapesScripts生成自己的标签
本文是在前面两篇文章的基础上,讲解如何更改训练数据集颜色,需要与前面两篇文章连起来看。 本文用于修改cityscapes数据集的标签颜色与Semankitti数据集的标签一致,对修改后的数据集进行训练。需要下载两个开发工具包和一个数据集࿰…...
《动手学深度学习(PyTorch版)》笔记3.3
注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过。…...
OpenGL ES 渲染 NV21、NV12 格式图像有哪些“姿势”?
使用2个纹理实现 NV21 格式图像渲染 前文提到渲染 NV21 格式图像需要使用 2 个纹理,分别用于保存 Y plane 和 UV plane 的数据,然后在片段着色器中分别对 2 个纹理进行采样,转换成 RGB 数据。 OpenGLES 渲染 NV21或 NV12 格式图像需要用到 GL_LUMINANCE 和 GL_LUMINANCE_A…...
P8813 [CSP-J 2022] 乘方 题解
目录 题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示题目简化题目思路AC 代码 观前提示,此题解解法非正解,仅仅是卡过数据才 A C AC AC 的。正解请参考他人博客。 题目描述 小文同学刚刚接触了信息学竞赛…...
Ubuntu 常用命令、docker 常用命令、unzip常用命令、tar常用命令
ubuntu 常用命令: 进入管理员模式: sudo su退出管理员模式: su <用户名>重启系统: rebootubuntu 复制文件夹下文件到其他文件夹下 cp -r source_folder/* destination_folder/删除文件夹下内容而不删除自身(进入到目录…...
保护医疗数据不受威胁:MPLS专线在医疗网络安全中的角色
随着数字技术的快速发展,医疗行业正在经历一场革命。从电子健康记录到远程医疗服务,数字化不仅提高了效率,也带来了前所未有的挑战--尤其是关于数据安全和隐私保护的挑战。在这样的背景下,如何确保敏感的医疗数据安全传输…...
Java面试题夺命连环问
如何实现一个ioc容器 配置文件配置包扫码路径递归包扫描获取.class文件反射确定需要 交给IOC管理的类对需要注入的类进行依赖注入 配置文件中指定需要扫描的包路径 定义一些注解,分别表示访问控制层,业务服务层,数据持久层,依赖…...
华为策略路由+NQA配置
---NQA--- [RouterA] nqa test-instance admin NQA [RouterA-nqa-admin-vlan10] test-type icmp [RouterA-nqa-admin-vlan10] destination-address ipv4 对方地址 [RouterA-nqa-admin-vlan10] frequency 10 [RouterA-nqa-admin-vlan10] probe-count 2 [RouterA-nqa-admin-vlan…...
逆置字符串
将字符串逆序,比如输入abcd,返回dcba void reverse(char*left,char *right) { while (right>left) { char temp *left; *left *right; *right temp; right--; left; } } int main() { char arr[100] { 0 };//定义…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合
无论是python,或者java 的大型项目中,都会涉及到 自身平台微服务之间的相互调用,以及和第三发平台的 接口对接,那在python 中是怎么实现的呢? 在 Python Web 开发中,FastAPI 和 Django 是两个重要但定位不…...
前端工具库lodash与lodash-es区别详解
lodash 和 lodash-es 是同一工具库的两个不同版本,核心功能完全一致,主要区别在于模块化格式和优化方式,适合不同的开发环境。以下是详细对比: 1. 模块化格式 lodash 使用 CommonJS 模块格式(require/module.exports&a…...
JavaScript 标签加载
目录 JavaScript 标签加载script 标签的 async 和 defer 属性,分别代表什么,有什么区别1. 普通 script 标签2. async 属性3. defer 属性4. type"module"5. 各种加载方式的对比6. 使用建议 JavaScript 标签加载 script 标签的 async 和 defer …...
el-amap-bezier-curve运用及线弧度设置
文章目录 简介示例线弧度属性主要弧度相关属性其他相关样式属性完整示例链接简介 el-amap-bezier-curve 是 Vue-Amap 组件库中的一个组件,用于在 高德地图 上绘制贝塞尔曲线。 基本用法属性path定义曲线的路径,可以是多个弧线段的组合。stroke-weight线条的宽度。stroke…...
Linux系统:进程间通信-匿名与命名管道
本节重点 匿名管道的概念与原理匿名管道的创建命名管道的概念与原理命名管道的创建两者的差异与联系命名管道实现EchoServer 一、管道 管道(Pipe)是一种进程间通信(IPC, Inter-Process Communication)机制,用于在不…...
Java求职者面试:微服务技术与源码原理深度解析
Java求职者面试:微服务技术与源码原理深度解析 第一轮:基础概念问题 1. 请解释什么是微服务架构,并说明其优势和挑战。 微服务架构是一种将单体应用拆分为多个小型、独立的服务的软件开发方法。每个服务都运行在自己的进程中,并…...
