使用决策树对金融贷款数据进行分析

news2024/11/19 16:47:38

使用决策树对金融贷款数据进行分析

在本篇博客中,我们将通过使用 Python、Pandas 和多种机器学习技术,对一组贷款数据进行全面分析。通过详细的步骤展示,你将学会如何进行数据预处理、可视化分析以及构建预测模型。

第一步:导入数据和必要的库

首先,我们需要导入数据并加载所需的库:

import pandas as pd
data = pd.read_csv("new_file.csv").sample(n=20000, random_state=42)

第二步:数据预处理

在数据预处理中,我们主要解决数据类型问题、处理缺失值以及删除无关特征:

data.drop(['id', 'url', 'desc', 'member_id'], axis=1, inplace=True)

可以通过指定 dtype 选项或者设置 low_memory=False 来解决此警告。
检查和处理缺失值和无限值

import numpy as np
inf_values = data[data == np.inf].values.any()
print(inf_values)

data.fillna(data.mean(), inplace=True)
data.interpolate(method='linear', inplace=True)

第三步:数据可视化

贷款金额分布

import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(10, 6))
sns.histplot(data['loan_amnt'], bins=30, kde=True, color='skyblue')
plt.title('贷款金额分布')
plt.xlabel('贷款金额')
plt.ylabel('频率')
plt.show()

在这里插入图片描述

信用等级分布

plt.figure(figsize=(10, 6))
data['grade'].value_counts().plot(kind='bar', color='lightgreen')
plt.title('信用等级分布')
plt.xlabel('信用等级')
plt.ylabel('频率')
plt.show()

在这里插入图片描述

按贷款状态划分的年收入分布

plt.figure(figsize=(10, 6))
sns.boxplot(x='loan_status', y='annual_inc', data=data)
plt.title('按贷款状态划分的年收入分布')
plt.xlabel('贷款状态')
plt.ylabel('年收入')
plt.show()

在这里插入图片描述

第四步:特征工程

处理日期特征

data['earliest_cr_line'] = pd.to_datetime(data['earliest_cr_line'])
data['issue_d'] = pd.to_datetime(data['issue_d'])
data['credit_hist'] = (data['issue_d'] - data['earliest_cr_line']).dt.days
data.drop(['earliest_cr_line', 'issue_d'], axis=1, inplace=True)

编码类别型特征

from sklearn.preprocessing import LabelEncoder
cat_cols = data.select_dtypes(include=['object']).columns

le = LabelEncoder()
for col in cat_cols:
    data[col] = le.fit_transform(data[col])

第五步:相关性分析

最后,我们通过热图来展示特征之间的相关性:

plt.figure(figsize=(12, 8))
corr = data.corr()
sns.heatmap(corr, cmap='coolwarm', annot=False)
plt.title('相关性热图')
plt.show()

在这里插入图片描述

第六步:划分训练集和测试集

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

X = data.drop('loan_status', axis=1)
y = data['loan_status']

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

第七步:构建和评估模型

我们使用决策树分类器来进行预测,并评估模型的性能:

from sklearn.metrics import accuracy_score, classification_report
from sklearn.tree import DecisionTreeClassifier

dt_model = DecisionTreeClassifier(random_state=42)
dt_model.fit(X_train, y_train)

y_pred = dt_model.predict(X_test)

accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)
print("分类报告:\n", classification_report(y_test, y_pred))

在这里插入图片描述
通过这些步骤,我们成功地对贷款数据进行了分析和建模,希望这篇教程能够帮助你更好地理解数据科学的工作流程。

**如有遇到问题可以找小编沟通交流哦。另外小编帮忙辅导大课作业,学生毕设等。不限于MapReduce, MySQL, python,java,大数据,模型训练等。 hadoop hdfs yarn spark Django flask flink kafka flume datax sqoop seatunnel echart可视化 机器学习等 **
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1683339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024-5-23 石群电路-14

2024-5-23,星期四,22:20,天气:晴,心情:晴。今天没有什么重要的事情发生,心情一如既往的平静,距离返校假期还有两天~~~。 今天观看了石群老师电路基础课程的第23/24个视频&#xff0…

蓝牙Classic加密算法设计和实现,SAFER+,E0,E1,E2,E3(python)

概述 之前用python给大家实现了所有LE相关加密工具算法。bobwenstudy/BluetoothCryptographicToolbox: LE SMP加密算法设计和实现(python) (github.com),最近重温了下Classic加密,顺便将Classic所有加密算法给实现了一遍。 在蓝牙Classic Spec中&#…

IS-IS基本配置 IS-IS邻接关系

一.IS-IS基本配置 原理概述 和 OSPF 路由协议一样, IS-IS 也是一个应用非常广泛的 IGP 路由协议,很多 ISP 网络、特别是大型的ISP网络都部署了IS-IS网络协议。 RIP 、 OSPF 等许多 IGP 都是针对 IP ( Internet Protocol )这个网络层协议而开…

深度学习之基于YoloV5人体姿态摔倒识别分析报警系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 随着人口老龄化的加剧和人们对健康安全的日益关注,摔倒事件在老年人、幼儿、体育运…

PMP项目管理资料

需要原件的私我!!! 各种编程相关资料学习

Stable Diffusion【写实模型】:逼真,逼真,超级逼真的国产超写实摄影大模型万享XL

今天和大家分享的是一个国产万享系列中使用量最高的大模型:万享XL_超写实摄影,顾名思义,该大模型主要是面向写实摄影,一方面生成的图片人物皮肤纹理细节超级逼真,另一方面对于光影效果的处理也非常到位。对于万享XL超写实摄影大模…

Linux多线程系列2: 模拟封装简易语言级线程库,线程互斥和锁,线程同步和条件变量,线程其他知识点

Linux多线程系列2: 模拟封装简易语言级线程库,线程互斥和互斥锁,线程同步和条件变量,线程其他知识点 1.前言 一.模拟C11线程库自己封装简易语言级线程库1.实现框架2.迅速把构造等等函数写完3.start和work1.尝试一2.尝试二3.最终版本4.给出代码 二.模拟实现多线程(为编写线程池做…

互联网医院开发:引领智慧医疗新时代

随着科技的迅猛发展和互联网的普及,传统医疗模式正在迎来一场深刻的变革。互联网医院的崛起,打破了时间和空间的限制,为患者和医疗机构带来了更加便捷、高效、安全的医疗服务体验。本文将从技术角度深入探讨互联网医院的开发,包括…

Hotcoin Research | 市场洞察:2024年5月13日-5月19日

加密货币市场表现 目前,加密货币总市值为1.32万亿,BTC占比54.41%。 本周行情呈现震荡上行的态势,BTC在5月15日-16日,有一波大的拉升,周末为震荡行情。BTC现价为67125美元。 上涨的主要原因:美国4月CPI为3…

安防监控视频平台EasyNVR级联视频上云系统EasyNVS出现“Login error”报错的原因排查

EasyNVR安防视频云平台是旭帆科技TSINGSEE青犀旗下支持RTSP/Onvif协议接入的安防监控流媒体视频云平台。平台具备视频实时监控直播、云端录像、云存储、录像检索与回看、告警等视频能力,能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、W…

RNN-循环神经网络

目录 词嵌入层 RNN网络层 RNN 网络原理 这一节我们学习循环神经网络,RNN~~ 自然语言处理(Nature language Processing, NLP)研究的主要是通过计算机算法来理解自然语言。对于自然语言来说,处理的数据主要就是人类的语言&#…

安卓绕过限制直接使用Android/data无需授权,支持安卓14(部分)

大家都知道,安卓每次更新都会给权限划分的更细、收的更紧。   早在安卓11的时候还可以直接通过授权Android/data来实现操作其他软件的目录,没有之前安卓11授权的图了,反正都长一个样,就直接贴新图了。   后面到了安卓12~13的…

基于语音识别的智能电子病历(三)之 M*Modal

讨论“基于语音识别的智能电子病历”,就绕不开 Nuance 和 M*Modal。这2个公司长时间的占据第一和第二的位置。下面介绍一下M*Modal。 这是2019年的一个新闻“专业医疗软件提供商3M公司为自己购买了一份圣诞礼物,即M*Modal IP LLC的医疗技术业务&#xf…

Github上传时报错The file path is empty的解决办法

问题截图 文件夹明明不是空的,却怎么都上传不上去。 解决方案: 打开隐藏文件的开关,删除原作者的.git文件 如图所示: 上传成功!

溪谷联运SDK功能全面解析

近期,备受用户关注的手游联运10.0.0版本上线了,不少用户也选择了版本更新,其中也再次迎来了SDK的更新。溪谷软件和大家一起盘点一下溪谷SDK的功能都有哪些吧。 一、溪谷SDK具有完整的运营功能和高度扩展性 1.登录:登录是SDK最基础…

洗地机哪个牌子好?全面评测多款口碑洗地机

洗地机的出现,让人们摆脱了每天打扫卫生的繁琐,因为它只需轻轻一推,就能把扫地、拖地、擦地的活全做了,干垃圾湿垃圾统统都能一次清理干净,操作简单,更轻松。本文主要分享一些挑选洗地机的技巧,…

创建vue工程、Vue项目的目录结构、Vue项目-启动、API风格

环境准备 介绍:create-vue是Vue官方提供的最新的脚手架工具,用于快速生成一个工程化的Vue项目create-vue提供如下功能: 统一的目录结构 本地调试 热部署 单元测试 集成打包依赖环境:NodeJS 安装NodeJS 一、 创建vue工程 npm 类…

物体检测算法-R-CNN,SSD,YOLO

物体检测算法-R-CNN,SSD,YOLO 1 R-CNN2 SSD3 Yolo总结 1 R-CNN R-CNN(Region-based Convolutional Neural Network)是一种基于区域的卷积神经网络,是第一个成功将深度学习应用到目标检测上的算法。它主要由三个步骤组…

2024最新 Jenkins + Docker 实战教程(四) - 编写自己的Springboot项目实现自动化部署

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

v-md-editor和SSE实现ChatGPT的打字机式输出

概述 不论是GPT还是文心一言,在回答的时候类似于打字机式的将答案呈现给我们,这样的交互一方面比较友好,另一方面,当答案比较多、生成比较慢的时候也能争取一些答案的生成时间。本文后端使用express和stream,使用SSE将…