【Ryo】Python:随机森林及参数优化——基于Kaggle的实战详解

本文介绍了使用Python的sklearn库进行随机森林模型的构建和参数优化,以解决Kaggle上的贷款数据集中的信用评估问题。通过对数据预处理、特征选择和模型调参,得出最佳模型的n_estimators为112,criterion为'entropy',准确率提升至0.98966。同时,文章也探讨了逻辑回归和 CART 回归树的对比。
摘要由CSDN通过智能技术生成

机器学习在目前数字金融领域具有重要的地位,因此学习各类ML方法对于解决金融识别、信用评估、政策判断有很大的帮助作用。本文是我偶然间发现Kaggle上最新的一个dataset,基于此贷款数据loandata进行了相关的Python操作,利用随机森林的集成方法解决金融政策判断的问题,同时进行了调参优化(无手撕推导 非算法)。

研究内容 软件 日期
机器学习;随机森林;调参 Python3 2021年7月25日

△△△△△本文为个人项目练习,仅供参考,如有不足欢迎讨论 △△△△△


一、数据背景

  我之前利用Modeler完成了一个关于信贷风险的贝叶斯神经网络建模项目。【链接:SPSS Modeler:贝叶斯网络在预测银行信贷风险中的应用】该项目也是应用为主,对于机器学习原理没有过多介绍,因此在特定情况下调参优化会成为一个难题。本次项目我选择从Python出发,利用sklearn机器学习撸代码解决类似的问题。

  关于数据:这个贷款数据是我在kaggle挑选的最新的一个数据集,它是来自LendingClub.com 的公开数据。该俱乐部将需要钱的人(借款人)与有钱的人(投资者)联系起来。有希望地,作为投资者,您希望投资那些表现出很有可能回报您的人。我将使用 2007-2010 年的贷款数据,并尝试对借款人是否全额偿还贷款进行分类和预测。该数据集共14个字段,9600条记录,字段描述如下所示:

在这里插入图片描述
  target是credit policy,如果客户符合LendingClub.com的信用承保标准,则为1,否则为0。本身这是一个针对因变量为0-1二元选择的一个求解问题,我们可以参考两种思路,一种是进行逻辑回归,把他当做一个寻找回归器regressor的问题,当然最优解还是把他当做二元的分类问题寻找一个classifier。

  最后,以下是该数据集部分的一个简单概览,准备动手吧!
在这里插入图片描述


二、数据准备与特征选择

  首先数据导入并导一些简单的数据操作包。

#1.导包 数据准备
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
data = pd.read_csv("D:\\py\\loan_data.csv")

  接着进行数据清洗,我们可以发现purpose是目的是一个分类别的字段,要用分类器则将6个类别转化为数字1-6。导入编码包encoder进行编码。

#2.数据清洗
from sklearn.preprocessing import LabelEncoder
data['purpose']= LabelEncoder().fit_transform(data['purpose'])

  再进行描述性统计,查看数据的基本情况,如缺失、分布、类别等。

#3.描述性统计及相关性分析
data.info()   # 展示data的概览信息 无缺失值
data.describe()  # 展示data描述性统计

  均已转化为整型或者浮点了,并且无缺失值可以直接开始特征选择。
在这里插入图片描述在这里插入图片描述

  查看数据的相关性,寻找相关性高的变量予以剔除。(注:本步骤其实进行了很多次调整,不是简单的因为fico与int.rate的高相关性而删除了int.rate变量)

data.corr() #相关性显示fico 和 int.rate 相关性0.7较高,模型中考虑删除某项
figure, ax = plt.subplots(figsize=(12, 12))
sns.heatmap(data.corr(), square=True, annot=True, ax=ax)
plt.show()

在这里插入图片描述
  可以看出0.71属于一个高相关性,对这两个变量需要进行取舍,中间进行了逻辑回归并且验证了向后剔除法是去掉rate变量后更优因此后续删除了该变量获得最终结果。x3为输入的自变量字段,y3为target。

#4.删除int.rate以后 继续优化
data_del2 = data.drop('int.rate', axis =
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值