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

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

在本篇博客中,我们将通过使用 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']).columnsle = 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 StandardScalerX = 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 DecisionTreeClassifierdt_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.rhkb.cn/news/329287.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络之传输层知识点总结

5.1 传输层 (1)传输层介绍 (2)传输层的两个协议 (3)传输层的寻址与端口 5.2 UDP协议 (1)用户数据报协议UDP介绍 (2)UDP首部格式 (3)UDP校验 …

一顿五元钱的午餐

在郑州喧嚣的城市一隅,藏着一段鲜为人知的真实的故事。 故事的主角是一位年过半百的父亲,一位平凡而又伟大的劳动者。岁月在他脸上刻下了深深的痕迹,但他眼神中闪烁着不屈与坚韧。 他今年52岁,为了给远在家乡的孩子们一个更好的…

面试准备-项目【面试准备】

面试准备-项目【面试准备】 前言面试准备自我介绍:项目介绍: 论坛项目功能总结简介数据库表设计注册功能登录功能显示登录信息功能发布帖子评论私信点赞功能关注功能通知搜索网站数据统计热帖排行缓存 论坛项目技术总结Http的无状态cookie和session的区别…

汇编小习题

彩笔好笨啊,知道原理还能写错。 1. 注释下面代码 Title Simple Add .386 ;使用80386指令集 .model flat, stdcall;内存模型为平坦模型,子程序采用stdcall约定 .stack 4096;为运行时堆栈分配4096空间 ExitProcess proto , dwExitCode:DWORD;为过程创建过…

从零开始搭建SpringCloud Alibaba微服务架构

Spring Cloud Alibaba是Spring Cloud的一个拓展项目,它用于构建基于阿里巴巴的微服务应用。它提供了多个阿里巴巴的开源组件,如Nacos、Sentinel、Dubbo等,用于解决微服务架构中的服务注册、配置管理、流量控制等问题。 Spring Cloud Alibaba…

QT控件QDialog结合QDialogButtonBox实现确认弹窗

项目需要二次确认开启,添加一个确认弹窗,采用QDialog并添加按钮控件。 QDialogButtonBox控件用于添加按钮组,初始化时可以增加标准按键,但是不能自定义按钮文字。 想要更改按键大小,但是没有提供设置组内按钮大小的函数…

使用Python生成一束玫瑰花

520到了,没时间买花?我们来生成一个电子的。 Python不仅是一种强大的编程语言,用于开发应用程序和分析数据,它也可以用来创造美丽的艺术作品。在这篇博客中,我们将探索如何使用Python生成一束玫瑰花的图像。 准备工作…

0407放大电路的频率响应

放大电路的频率响应 单时间常数RC电路的频率响应中频响应高频响应低频响应全频域响应 放大电路频率响应概述1. 直接耦合放大电路频域响应阻容耦合放大电路频域响应 4.7.1 单时间常数RC电路的频率响应 4.7.2 放大电路频率响应概述 4.7.3 单级共射极放大电路的频率响应 4.7.4 单级…

【笔记】软件架构师要点记录(2)

【笔记】软件架构师要点记录 20240523案例一案例二案例三案例四案例五案例六案例七案例十 20240523 基于前10个架构案例场景,对用到的专业术语进行整理,方便后续查看。 案例一 MVC架构风格组件交互方式 MVC是一种用来构建用户界面时采用的架构设计风格…

142.栈和队列:用栈实现队列(力扣)

题目描述 代码解决 class MyQueue { public:stack<int> stIn; // 输入栈&#xff0c;用于push操作stack<int> stOut; // 输出栈&#xff0c;用于pop和peek操作MyQueue() {}void push(int x) {stIn.push(x); // 将元素压入输入栈}int pop() {// 如果输出栈为空&…

Linux 信号捕捉与处理

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;Linux知识分享⏪   &#x1f69a;代码仓库:Linux代码练习&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Linux知识   &#x1f51d; ​ 目录 前言 1. 信号的处理时机 1.1用户…

jiebaNET中文分词器

最近我接手了一个有趣的需求&#xff0c;需要对用户评价进行分词&#xff0c;进行词频统计和情绪分析&#xff0c;并且根据词频权重制成词云图以供后台数据统计&#xff0c;于是我便引入了jieba分词器,但是我发现网上关于jiebaNET相关文档实在太少了&#xff0c;甚至连配置文件…

知识分享|非凸问题求解方法及代码示例【分类迭代】【大M法】

主要内容 之前发布了非线性问题线性化的几种方法&#xff0c;如知识分享|分段函数线性化及matlab测试&#xff0c;学习园地 | yalmip实用操作-线性化&#xff0c;非线性优化 | 非线性问题matlabyalmip求解案例&#xff0c;但是在实际建模及编程过程中&#xff0c;会遇到各种…

【C++】学习笔记——map和set

文章目录 十五、map和set1. 关联式容器2. set的介绍3. set的使用4. multiset5. map的介绍6. map的使用7. multimap8. map中重载的operator[] 未完待续 十五、map和set 1. 关联式容器 我们已经接触过STL中的部分容器&#xff0c;比如&#xff1a;vector 、list 、deque 等&…

抖音小店什么产品最好卖?六月份的必爆产品!商家抓紧上架!

哈喽~我是电商月月 做抖音小店&#xff0c;爆款是非常吃香的&#xff0c;但普通玩家只有在爆款出来的那几天才能发现&#xff0c;再去截流&#xff0c;其实热度已经不高了&#xff0c;那想吃到这一口“螃蟹”只能自己去挖掘 每年爆的产品就是那几种&#xff0c;我们可以朝这几…

HackTheBox-Machines--Bank

文章目录 0x01 信息收集0x02 文件上传漏洞利用0x03 权限提升方法一&#xff1a;SUID提权方法二&#xff1a;配置不当提权 Bank 测试过程 0x01 信息收集 1.端口扫描 发现 ssh(22)、DNS(53)、HTTP(80) 端口 nmap -sC -sV 10.129.29.200访问 80 端口&#xff0c;页面为Apache2 U…

非授权人员进入报警系统

非授权人员进入报警系统基于智能视频分析技术和深度学习技术&#xff0c;非授权人员进入报警系统通过现场已经装好的监控摄像头针对人体进行精准检测&#xff0c;并根据设置的禁入区范围进行判断。通过图像处理和人体识别算法&#xff0c;非授权人员进入报警系统可以在实时监测…

鸿蒙HarmonyOS开发中的易混点归纳-持续补充中

相关文章目录 鸿蒙HarmonyOS开发术语全解&#xff1a;小白也能看懂&#xff01; 文章目录 相关文章目录前言一、build()函数和Builder装饰器&#xff1f;二、自定义组件和系统组件&#xff08;内置组件&#xff09;三、组件和页面四、自定义弹窗和其他弹窗总结 前言 一、build…

一个通过ADC采集NTC热敏电阻的温度传感器

前言: 如何设计一个电路,使用具有逐次逼近寄存器(SAR)模数转换器(ADC)的热敏电阻直接监测温度呢?温度传感电路需要使用负温度系数(NTC)热敏电阻与电阻器串联形成分压器,监测-25C至100C的温度范围。分压器具有产生与监测的温度成反比的输出电压的效果。电阻器分压器的…

Flink 高可用之StandAlone-HA模式(一)

obManager存在单点故障&#xff08;SPOF&#xff1a;Single Point Of Failure&#xff09;&#xff0c;因此对Flink做HA&#xff0c;主要是对JobManager做HA&#xff0c;根据Flink集群的部署模式不同&#xff0c;分为Standalone、OnYarn&#xff0c;本文主要涉及Standalone模式…