이 할 수있는 더 좋은 방법이 있어야하지만, 여기에 해결 방법입니다 :
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