基于R语言做决策树和随机森林(3)

上节我们介绍了随机森林的一些简单情况和使用R语言做二分类结局变量的随机森林模型分析,今天我们继续来介绍为连续变量结局变量的随机森林模型分析,废话不多说,立即开始,使用的数据为SPSS自带的大气层臭氧的数据集,主要描述的是臭氧浓度和大气一些相关指标的情况,因为有些数据是非线性的,使用Logistic回归不合适,可以使用随机森林模型进行分析。
需要使用到randomForest、pROC、lforeign、Metrics、ggplot2包,要先下载好,我们先导入数据看一下情况

library(randomForest)
library(pROC)
library(foreign)
library(Metrics)
library(ggplot2)
bc <- read.spss("E:/r/test/ozone.sav",
                use.value.labels=F, to.data.frame=T)
names(bc)

在这里插入图片描述
在这里插入图片描述
数据中有七个变量,ozon每日臭氧水平为结局变量,Inversion base height反转基准高度,Pressure gradient (mm Hg) 压力梯度(mm Hg),Visibility (miles) 能见度(英里),Temperature (degrees F) 温度(华氏度),Day of the year日期,vh我也不知道是什么,反正就是一参数,这里所有的变量都是连续的。
和二分类模型一样,我们先建立训练集和验证集

set.seed(1)
index <- sample(2,nrow(bc),replace = TRUE,prob=c(0.7,0.3))
traindata <- bc[index==1,]
testdata <- bc[index==2,]

在这里插入图片描述
建立随机森林模型

def_ntree<- randomForest(ozon ~vh+ibh+dpg+vis+temp,data=traindata,
                         ntree=500,important=TRUE,proximity=TRUE)
plot(def_ntree)

在这里插入图片描述
可以看到到了500颗树后,模型比较稳定了,我们还可以通过tuneRF函数求出mtry,

mte<-tuneRF(traindata[,c(1,3:6)],traindata[,2],stepFactor =2)

假如我们想知道温度和臭氧浓度的关系,可以发现,当温度达到90度,对臭氧影响很大

partialPlot(def_ntree,traindata,temp,"0",xlab = "temp",ylab = "Variabl effect")

在这里插入图片描述
接下来生成训练集和预测集的概率

ctree.predict = predict(def_ntree,testdata)
traindata$ctree.predict1 = predict(def_ntree,traindata)

通过查看R2,rmse,mae比较模型的拟合性

r2<-cor(ctree.predict,testdata$ozon)^2
rmse<-rmse(ctree.predict,testdata$ozon)
mae<-mae(ctree.predict,testdata$ozon)

在这里插入图片描述
生成校准的散点图,可以发现大于15以后,预测效能变差,残差增大

plot(ctree.predict,testdata$ozon,pch=19,col="gray25",xlab = "实际值",ylab="预存值")
abline(0,1,col="red")

在这里插入图片描述
对变量重要性进行评分,可以发现温度和高度是影响臭氧的重要变量

varImpPlot(def_ntree)

在这里插入图片描述

ggplot() +
  geom_line(data=traindata,aes(traindata$doy, traindata$ozon,col="red"))+
  geom_line(data=traindata,aes(traindata$doy, traindata$ctree.predict1,col="greed"))+
  theme(legend.background = element_blank(),legend.position = c(0.1,0.8))+
  scale_color_discrete(name = "类别", labels = c("实际值", "预测值"))

在这里插入图片描述
我们还可以把任何数据带入求出预测值,也可以通过把臭氧浓度分类进行预判,还有通过验证集验证模型的预测性能,我这里就不一一演示了,可以参考前面两篇的内容。
更多精彩文章请关注公众号:零基础说科研
在这里插入图片描述

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天桥下的卖艺者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值