从R中的randomForest模型中提取或添加原始数据值

时间:2017-12-20 00:42:56

标签: r random-forest

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

我可以想到两种方法。 1)直接将数据添加到原始模型。我尝试通过?更新,但它似乎没有像我认为的那样工作。下面的代码创建了一个非常简单的随机林,然后尝试更新带有附加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对象具有原始响应变量z via(mod $ y),但我不相信,它具有原始的x和y值。但它确实拥有整个森林。

如果不清楚,我道歉。

1 个答案:

答案 0 :(得分:0)

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

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

这是一个例子:

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

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