【问题标题】:Extracting, or adding to, original data values from randomForest model in R从 R 中的 randomForest 模型中提取或添加原始数据值
【发布时间】:2018-06-02 11:55:36
【问题描述】:

我有一个从 R 中的数据集生成的 randomForest 模型。我没有用于创建该模型的原始数据。最终,我想做的是添加到用于创建该模型的原始数据集以增加该模型中的样本量。

我可以想到两种方法来做到这一点。 1)直接将数据添加到原始模型中。我通过 ?update 尝试过,但它似乎不像我认为的那样工作。以下代码创建了一个非常简单的随机森林,然后尝试使用额外的 x 和 y 数据更新公式,但查看 str 结果很明显没有添加任何内容:

x <- 1:10
y <- 2:11
z <- 3:12
mod <- randomForest(z~x+y)
str(mod)

test <- cbind(runif(100,0,10),runif(100,0,10),runif(100,100,1000))
colnames(test) <- c("x","y","z")

mod2 <- update(mod,.~., test)
str(mod2)

从文档看来,您需要更新原始数据?

2) 以某种方式从模型对象中获取原始数据。这是不太理想的,但如果我这样做,我可以简单地将数据附加到原始数据并重建模型。 randomforest 对象通过 (mod$y) 具有原始响应变量 z,但我不相信它具有原始 x 和 y 值。但是,它确实拥有整个森林。

如果不清楚,我深表歉意。

【问题讨论】:

  • 欢迎来到 Stack Overflow!我无法执行你的代码;函数randomForest来自哪个包?
  • 快速浏览一下,我认为这两种方法都行不通。 update 只更新调用,即公式,而不是数据——它需要原始数据并将重新适应该数据。如果您删除原始 x、y 和 z 对象,您将看到 update 函数失败。而对于选项 2,randomForest 对象不包含原始数据。
  • 图书馆是randomForest。
  • 感谢 jmuhlenkamp 的回复。我同意这似乎不可能,至少以直截了当的方式。奇怪的是,原始响应变量位于随机森林模型对象和整个森林中,而不是原始预测变量(看起来就是这种情况)......或者整个森林,无法以某种方式更新带有一组新的 x、y 和 z。太糟糕了,也许还有更聪明的方法。

标签: r random-forest


【解决方案1】:

我有一个类似的问题(这就是我偶然发现这篇文章的原因),我最终找到了答案。

正如@jmuhlenkamp 所述,randomForest 对象不包含原始数据。但是,您始终可以从用于创建对象的调用中提取数据。

这是一个例子:

require(randomForest)
data(iris)
rf = randomForest(Species~., data=iris)
data_name = getCall(rf)$data
iris_again = eval(data_name)

然后您可以根据需要使用update 更新公式,然后提供一个新的(根据您的情况进行了修改)数据集。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    相关资源
    最近更新 更多