2011-12-16 23 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