【问题标题】:Extract plotting data from Partial Dependence plot built from random forest从随机森林构建的部分依赖图中提取绘图数据
【发布时间】:2019-06-28 12:05:22
【问题描述】:

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

这里有一些类似于我的代码,带有一个包提供的数据集。

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

这是默认情节的样子

【问题讨论】:

    标签: r random-forest confidence-interval


    【解决方案1】:

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

    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
    

    这个函数中可能还有一些不必要的垃圾,但它会重现用于制作情节的数据。

    【讨论】:

      猜你喜欢
      • 2016-12-30
      • 2017-01-12
      • 2013-12-18
      • 2013-11-27
      • 2013-12-31
      • 2015-02-26
      • 2017-12-04
      • 1970-01-01
      • 2016-11-10
      相关资源
      最近更新 更多