2011-12-16 49 views
2

我训练随机森林:[R随机森林:接近新的目标

model <- randomForest(x, y, proximity=TRUE) 

当我想预测Ÿ新对象,我用

y_pred <- predict(model, xnew) 

如何计算之间的接近新的对象(xnew)和基于已经存在的森林(模型)的训练集(x)? 预测函数中的接近度选项仅给出新对象(xnew)中的接近度。我可以在组合的数据集(x和xnew)上运行randomForest再次无监督以获得接近度,但我认为必须有一些方法来避免再次构建森林,而是使用已有的森林。

谢谢! 基利安

回答

4

我相信你想要的是在randomForest调用本身,像这样指定您的测试意见:

set.seed(71) 
ind <- sample(1:150,140,replace = FALSE) 
train <- iris[ind,] 
test <- iris[-ind,] 

iris.rf1 <- randomForest(x = train[,1:4], 
         y = train[,5], 
         xtest = test[,1:4], 
         ytest = test[,5], 
         importance=TRUE, 
         proximity=TRUE) 

dim(iris.rf1$test$prox) 
[1] 10 150 

所以,让你从十个测试案例全部150

接近

唯一的其他选择就是致电predict对您的新案例rbind编辑原始培训案例,我想。但这样你就不需要在randomForest的调用之前提前测试你的测试案例。

在这种情况下,你会想在randomForest呼叫使用keep.forest = TRUE,当然设置proximity = TRUE当你调用predict

+0

谢谢!将新案例绑定到训练集对我来说很合适。 – Kilian 2011-12-20 09:50:59