R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测|附代码数据

news/2024/11/19 19:19:21/文章来源:https://www.cnblogs.com/tecdat/p/18290886

原文链接:http://tecdat.cn/?p=17950 

最近我们被客户要求撰写关于的研究报告,包括一些图形和统计输出。

 

在本文中,我们使用了逻辑回归、决策树和随机森林模型来对信用数据集进行分类预测并比较了它们的性能

 

数据集是

 
 
credit=read.csv("gecredit.csv", header = TRUE, sep = ",")

看起来所有变量都是数字变量,但实际上,大多数都是因子变量,

 
 
> str(credit)
'data.frame':    1000 obs. of  21 variables:
 $ Creditability   : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Account.Balance : int  1 1 2 1 1 1 1 1 4 2 ...
 $ Duration        : int  18 9 12 12 12 10 8  ...
 $ Purpose         : int  2 0 9 0 0 0 0 0 3 3 ...

让我们将分类变量转换为因子变量,

 
 
> F=c(1,2,4,5,7,8,9,10,11,12,13,15,16,17,18,19,20)
> for(i in F) credit[,i]=as.factor(credit[,i])

现在让我们创建比例为1:2 的训练和测试数据集

 
 
> i_test=sample(1:nrow(credit),size=333)
> i_calibration=(1:nrow(credit))[-i_test]

我们可以拟合的第一个模型是对选定协变量的逻辑回归

 
 
> LogisticModel <- glm(Creditability ~ Account.Balance + Payment.Status.of.Previous.Credit + Purpose + 
Length.of.current.employment + 
Sex...Marital.Status, family=binomia

基于该模型,可以绘制ROC曲线并计算AUC(在新的验证数据集上)

 
 
> AUCLog1=performance(pred, measure = "auc")@y.values[[1]]
> cat("AUC: ",AUCLog1,"\n")
AUC:  0.7340997

图片

一种替代方法是考虑所有解释变量的逻辑回归

 
 
 glm(Creditability ~ ., 
+  family=binomial, 
+  data = credit[i_calibrat

点击标题查阅往期内容

图片

R语言基于树的方法:决策树,随机森林,套袋Bagging,增强树

图片

左右滑动查看更多

图片

01

图片

02

图片

03

图片

04

图片

我们可能在这里过拟合,可以在ROC曲线上观察到

 
 
> perf <- performance(pred, "tpr", "fpr
> AUCLog2=performance(pred, measure = "auc")@y.values[[1]]
> cat("AUC: ",AUCLog2,"\n")
AUC:  0.7609792

图片

与以前的模型相比,此处略有改善,后者仅考虑了五个解释变量。

现在考虑回归树模型(在所有协变量上)

我们可以使用

 
 
> prp(ArbreModel,type=2,extra=1)

图片

模型的ROC曲线为

 
 
(pred, "tpr", "fpr")
> plot(perf)> cat("AUC: ",AUCArbre,"\n")
AUC:  0.7100323

图片

不出所料,与逻辑回归相比,模型性能较低。一个自然的想法是使用随机森林优化。

 
 
> library(randomForest)
> RF <- randomForest(Creditability ~ .,
+ data = credit[i_calibration,])
> fitForet <- predict(RF,> cat("AUC: ",AUCRF,"\n")
AUC:  0.7682367

图片

在这里,该模型(略)优于逻辑回归。实际上,如果我们创建很多训练/验证样本并比较AUC,平均而言,随机森林的表现要比逻辑回归好,

 
 
> AUCfun=function(i){
+   set.seed(i)
+   i_test=sample(1:nrow(credit),size=333)
+   i_calibration=(1:nrow(credit))[-i_test]+   summary(LogisticModel)
+   fitLog <- predict(LogisticModel,type="response",
+                     newdata=credit[i_test,])
+   library(ROCR)
+   pred = prediction( fitLog, credit$Creditability[i_test])+   RF <- randomForest(Creditability ~ .,
+   data = credit[i_calibration,])+   pred = prediction( fitForet, credit$Creditability[i_test])+   return(c(AUCLog2,AUCRF))
+ }
> plot(t(A))

图片


图片

点击文末 “阅读原文”

获取全文完整资料。

本文选自《R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测》。

点击标题查阅往期内容

逻辑回归(对数几率回归,Logistic)分析研究生录取数据实例
R语言使用Metropolis- Hasting抽样算法进行逻辑回归
R语言逻辑回归Logistic回归分析预测股票涨跌
R语言在逻辑回归中求R square R方
R语言逻辑回归(Logistic Regression)、回归决策树、随机森林信用卡违约分析信贷数据集
R语言对用电负荷时间序列数据进行K-medoids聚类建模和GAM回归
R语言进行支持向量机回归SVR和网格搜索超参数优化
R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例
在R语言中实现Logistic逻辑回归
R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病
R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数
R语言逻辑回归logistic模型分析泰坦尼克titanic数据集预测生还情况
R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据
R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析
R语言基于Bagging分类的逻辑回归(Logistic Regression)、决策树、森林分析心脏病患者
R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险

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

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

相关文章

代码随想录算法训练营第27天 | 122.买卖股票的最佳时机 II 55. 跳跃游戏 1005.K次取反后最大化的数组和

122.买卖股票的最佳时机 II 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。 返回 你能获得的 最大 利润 。 解题: 思路:最…

R语言实现 Copula 算法建模相依性案例分析报告

原文链接:http://tecdat.cn/?p=6193 原文出处:拓端数据部落公众号copula是将多变量分布函数与其边缘分布函数耦合的函数,通常称为边缘。Copula是建模和模拟相关随机变量的绝佳工具。Copula的主要吸引力在于,通过使用它们,你可以分别对相关结构和边缘(即每个随机变量的分…

【视频讲解】Python、R时间卷积神经网络TCN与CNN、RNN预测时间序列3实例附代码数据

全文链接:https://tecdat.cn/?p=36944 原文出处:拓端数据部落公众号 本文旨在探讨时间卷积网络(Temporal Convolutional Network, TCN)与CNN、RNN在预测任务中的应用。通过引入TCN模型,我们尝试解决时间序列数据中的复杂依赖关系,以提高预测的准确性。本文首先介绍了TCN…

反转链表

目录L206 反转链表题目描述题解方法一:迭代方法二:递归L92 反转链表 II题目描述题解方法一:一遍扫描方法二:穿针引线L25 K个一组反转链表题目描述题解方法一:模拟 L206 反转链表 题目描述 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例1:示例2:题…

springboot 进程已结束,退出代码为 0

原文:https://blog.csdn.net/lvoelife/article/details/134129860 在pom.xml中,添加<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>然后用maven,重新加载项目…

G64【模板】线性基 贪心法 P3812 最大异或和

视频链接: P3812 【模板】线性基 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)// 线性基 O(63*n) #include <iostream> #include <cstring> #include <algorithm> using namespace std;typedef long long LL; int n; LL p[64];void insert(LL x){ //贪…

相机的标定

Camera-calibration 用于矫正相机的畸变代码部分 #打开摄像头,将读取的视频保存在本地,名字叫output.avi# coding=utf-8 import cv2 as cv cap = cv.VideoCapture(0) # 检查是否成功打开摄像头 if not cap.isOpened():print("Cannot open camera")exit() # 获取摄像…

关于golang函数传参问题

今天在写leetcode的一个简单问题的时候发现golang的切片传递并不是直接 传递地址的,而是一个地址副本。如图所示,当我利用test函数对nums1和nums2数组处理时,并不是对原来的nums1和nums2做处理,而是对他们的副本nums1_temp和nums2_temp做处理,但是nums1_temp和nums1都指向…

PN转Modbus RTU模块连接ACS4QQ变频器通信

巴图自动化PN转Modbus RTU模块(BT-MDPN10)的主要功能是实现Modbus协议和Profinet协议之间的转换和通信。PN转Modbus RTU模块集成了Modbus和Profinet两种协议,支持Modbus RTU主从站,可连接变频器、智能高低压电器、功率测量设备等RS485/232接口设备。一台完整的机器在出厂前由…

RS232转PN协议网关模块连接PLC和霍尼韦尔条码扫描器通信

利用RS232转PN协议网关(BT-PNR20)模块连接PLC与条码扫描器,通过配置RS232转PN协议网关(BT-PNR20)模块连接PLC与条码扫描器参数实现高效通信,提高生产效率,降低人工干预成本。涉及设备准备、硬件连接、配置步骤和监控设置。为了更快地输入信息,许多设备都配备了条码扫描…

vscode 远程连接 Ubuntu (SSH)

vscode ssh Ubuntu 流程及一些常见问题的解决安装对应的拓展包显示所有的命令(Ctrl+Shift+p)获取虚拟机的ip sudo apt install net-tools ifconfig进行连接如果连接的时候报错(管道不存在) 在Ubuntu中打开ssh服务即可如果连接了很久没有连上(Permission denied (publickey…

2024已过半,还没试过在vue3中使用ioc容器吗?

Zova 是一款支持 IOC 容器的 Vue3 框架。有了 IOC 容器的加持,定义响应式状态不再需要ref/reactive,也不再需要ref.valueVue3 已经非常强大和灵活了,为什么还要引入 IOC 容器呢?IOC 容器离不开 Class,那么我们就从 Class 谈起 Class的应用场景 一提起 Class,大家一定会想…