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

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

时间:2024-07-08 23:30:41浏览次数:12  
标签:AUC 语言 回归 逻辑 credit 随机 数据 决策树

原文链接: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回归)模型分类预测病人冠心病风险

标签:AUC,语言,回归,逻辑,credit,随机,数据,决策树
From: https://www.cnblogs.com/tecdat/p/18290886

相关文章

  • 【Redis 理论与实践学习】 一、Redis的数据结构:4.Set类型
    文章目录简介Set和List的区别常用命令增删改查类命令添加元素移除元素判断元素是否存在获取集合大小获取集合所有成员随机获取元素随机移除并返回元素运算操作命令集合间操作集合间操作并存储应用场景博客点赞用户点赞操作公众号共同关注用户关注集合共同关注查询......
  • 数据分析-Excel篇总结
    sum函数:1.对选定的区域进行求和,可以是整行、整列或一个区域。2.英文输入=sum,按Tab键建立sum函数,再选中区域。3.注意列、行的标签索引,如C14.sum函数可以不在同一表里操作。5.视图-新建窗口,可以建立一个一模一样的excel表格,不影响原表格操作,看着方便6.视图-冻结窗格,可以冻......
  • vue3 watch使用方式,如何监听reactive子属性 ref数据等
    代码<template><divclass="box">childB</div></template><scriptlang="ts"setup>import{reactive,watch,ref}from"vue";constdata1=reactive({msg:"childB",abc:"sl......
  • redis如何与mysql数据保持一致?
    redis如何与mysql数据保持一致?同步双写:cacheasidepattern,读:先读缓存再读数据库,一个缓存的过期时间,实现起来简单好用极限情况还会有数据不一致的风险。CAP定理:c一致性a可用性p分区容错性,cp或者是ap异步双写:基于消息队列实现,写:生产者:先更新数据库,向队列发消息,消费者:监听消......
  • 音频demo:使用opencore-amr将PCM数据与AMR-NB数据进行相互编解码
    1、READMEa.编译编译demo由于提供的.a静态库是在x86_64的机器上编译的,所以仅支持该架构的主机上编译运行。$make编译opencore-amr如果想要在其他架构的CPU上编译运行,可以使用以下命令(脚本)编译opencore-amr[下载地址]得到相应的库文件进行替换:#!/bin/bashtarxzf......
  • Python数据结构详解:列表、字典、集合与元组的使用技巧
    前言哈喽,大家好!今天我要和大家分享的是关于Python中最常用的数据结构:列表、字典、集合和元组的使用技巧。你有没有遇到过在处理数据时,不知道该用哪种数据结构来存储和操作数据的情况呢?别担心,今天这篇文章就来帮你搞定这些问题,让你在数据处理上更加得心应手。最后,别忘了关......
  • 2023首届服务韧性工程(SRE)论坛分会场:数据中心运维的新发展
    2023年12月15日,2023首届服务韧性工程(SRE)论坛在杭州成功举行,大会邀请了来自通信、金融、医疗、制造行业等100余位SRE领域专业人士参加,本次大会特别设立了主题为“数据中心运维的新发展”的分会场,由广通优云和SRE专委会联合出品。邀请来自数据中心领域不同行业的产学研用的专家,就......
  • json数据写入到mysql数据中
    importpymysql#json文件中格式一个列表包含一个个的字典数据#[{"title":"胖猫事件-21岁游戏代练胖猫跳江身亡,PUA捞女女主谭竹遭网友报告视频","cover":"https://suvip888.com/20240516/U8NEMN2P/1.jpg","m3u8_url":"https://vodvip888.com/20240516/U8NEMN2P/......
  • MySQL数据库基本操作-DDL和DML
    1.DDL解释DDL(DataDefinitionLanguage),数据定义语言,该语言部分包括以下内容:对数据库的常用操作对表结构的常用操作修改表结构2.对数据库的常用操作功能SQL查看所有的数据库showdatabases;查看有印象的数据库show databaseslike'_xx%'(_一个字符;%任意字符)创建数据......
  • 私有云盘-可道云-安装和使用和数据迁移
    私有云盘是什么随着云计算和移动办公大潮的到来,iPad、智能手机等家庭联网设备不断增多,以及搭载小容量SSD笔记本电脑的流行,能够跨平台分享的个人云服务需求不断增长;而今天的个人云服务也已经极大丰富,从2TB的百度网盘到商务人士中流行的Dropbox和Box个人云,不但免费,而且功能界面简......