0
我想提取隨機森林R實現的終端節點。正如我所瞭解的隨機森林,你有一系列正交樹。當你預測一個新的觀察結果(迴歸)時,它將進入所有這些樹,然後你平均預測每棵樹。如果我不想平均數,但也許用這些相應的觀測值進行線性迴歸,那麼我需要一個與這個新觀測值「相關聯」的觀測值列表。我已經通過源代碼,但沒有想出一個方法來獲得這個。誰能幫我?提取與新觀察相關的每棵樹的終端節點
我想提取隨機森林R實現的終端節點。正如我所瞭解的隨機森林,你有一系列正交樹。當你預測一個新的觀察結果(迴歸)時,它將進入所有這些樹,然後你平均預測每棵樹。如果我不想平均數,但也許用這些相應的觀測值進行線性迴歸,那麼我需要一個與這個新觀測值「相關聯」的觀測值列表。我已經通過源代碼,但沒有想出一個方法來獲得這個。誰能幫我?提取與新觀察相關的每棵樹的終端節點
必須有一個更好的方式來做到這一點,但這裏有一個解決方法:
library(randomForest)
set.seed(713)
## data
my.df <- data.frame(x = rnorm(100), y = rnorm(100))
## forest
rf <- randomForest(y ~ x, data = my.df, ntree = 10, keep.inbag = TRUE)
keep.inbag = TRUE
節省了用於滿足每10種樹木在這個例子中,inbag意見
predList <- lapply(seq_len(rf$ntree), function(z)
predict(rf, newdata = my.df[rf$inbag[, z] == 1, ], nodes = TRUE))
nodes = TRUE
磁道中的每個觀測結束終端節點。
node.list <- lapply(seq_len(rf$ntree), function(z)
split(x = my.df[rf$inbag[, z] == 1, "x"],
f = attr(predList[[z]], "nodes")[, z]))
第一棵樹的前三個終端節點:
node.list[[1]][1:3]
$`3`
[1] 2.028358 2.071939
$`7`
[1] 0.8306559
$`9`
[1] 1.660134 1.621299
一切都很完美。謝謝! – JEquihua