当前位置: 首页 > news >正文

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

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

在本篇博客中,我们将通过使用 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可视化 机器学习等 **
在这里插入图片描述

相关文章:

  • docker swarm多主机之间的端口无法访问,但能ping通 问题排查及解决
  • SQL常用基础语句(一)-- FGHIJ开头
  • 【C++初阶】--- C++入门(上)
  • 开源大模型与闭源大模型:技术哲学的较量
  • 微服务远程调用 RestTemplate
  • 【MySQL精通之路】SQL优化(1)-查询优化(8)-嵌套联接优化
  • 在docker中安装官方rocketmq
  • 【C语言回顾】联合和枚举
  • CTFshow之文件上传web入门151关-161关解密。包教包会!!!!
  • 基于树的存储数据结构demo
  • Ubuntu系统版本查看办法
  • (Qt) 默认QtWidget应用包含什么?
  • 汽车工厂安灯系统能够快速知晓生产现场的状况
  • github下载代码
  • Docker 部署 Nginx 实现一个极简的 负载均衡
  • JavaScript-如何实现克隆(clone)函数
  • [LeetCode] Wiggle Sort
  • [Vue CLI 3] 配置解析之 css.extract
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • 08.Android之View事件问题
  • canvas 绘制双线技巧
  • CentOS从零开始部署Nodejs项目
  • chrome扩展demo1-小时钟
  • co.js - 让异步代码同步化
  • Docker入门(二) - Dockerfile
  • ES6之路之模块详解
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Java,console输出实时的转向GUI textbox
  • Java多态
  • js对象的深浅拷贝
  • React Transition Group -- Transition 组件
  • SAP云平台里Global Account和Sub Account的关系
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • vue的全局变量和全局拦截请求器
  • 第2章 网络文档
  • 检测对象或数组
  • 聊聊flink的TableFactory
  • 每天10道Java面试题,跟我走,offer有!
  • 区块链技术特点之去中心化特性
  • 用Canvas画一棵二叉树
  • 扩展资源服务器解决oauth2 性能瓶颈
  • # 计算机视觉入门
  • $().each和$.each的区别
  • (NSDate) 时间 (time )比较
  • (SpringBoot)第七章:SpringBoot日志文件
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (二)JAVA使用POI操作excel
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (附源码)计算机毕业设计高校学生选课系统
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)Sql Server 保留几位小数的两种做法