首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从随机森林构建的偏相关图中提取绘图数据

从随机森林构建的偏相关图中提取绘图数据
EN

Stack Overflow用户
提问于 2019-02-05 01:32:57
回答 1查看 453关注 0票数 1

我已经从我的随机森林中为一个预测器构建了一个部分依赖图。我想提取用于构建图的数据(特别是置信区间和预测值),并在ggplot中重建它。如何访问用于绘制曲线图和置信度区间的数据?

下面是一些与我的代码类似的代码,其中包含一个包提供的数据集。

代码语言:javascript
复制
library(randomForest)
library(rfUtilities)
data(airquality)
airquality <- na.omit(airquality)
rf.ozone <- randomForest(y=airquality[,"Ozone"], 
airquality[,2:ncol(airquality)])
rf.partial.ci(m=rf.ozone, x=airquality, yname="Ozone", xname="Temp", lci = 
.025, uci=.975)
partial_P_data  =rf.partial.ci(m=rf.ozone, x=airquality, yname="Ozone", 
xname="Temp", lci = .025, uci=.975) # original attempt to locate data

下面是默认图的样子

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-07 00:33:41

这是我在查看包源代码后找到的解决方案。它是对用于绘制绘图的函数的修改。

代码语言:javascript
复制
rf.data.ci <- function(m, x, yname, xname, lci=0.25, uci=0.75, delta=FALSE) {
if(!any(class(m) %in% c("randomForest","list"))) stop("m is not a 
randomForest object")
if(m$type != "regression") stop("classification is not supported")
conf.int <-(uci-lci)*100
temp <- sort(x[, xname])
y.hat.mean <- vector()
y.hat.lb <- vector()
y.hat.ub <- vector()
y <- stats::predict(m, x)
for (i in 1:length(temp)){
x[, xname] <- temp[i]
y.hat <- stats::predict(m, x)
if (delta == TRUE){ y.hat <- y.hat - y }
y.hat.mean[i] <- stats::weighted.mean(y.hat)
y.hat.lb[i] <- stats::quantile(y.hat, lci)
y.hat.ub[i] <- stats::quantile(y.hat, uci)
}
m.ci <- as.data.frame(cbind(temp, y.hat.mean, y.hat.lb, y.hat.ub))
}# creates data_set CI and predictions for partial dependcy plots, based on 
rfutilities

在这个函数中可能还有一些不必要的垃圾,但它将重现用于绘制绘图的数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54521395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档