如何在randomForest
的输出中绘制树在R中的相同名称包中的功能?例如,我使用iris
数据,并希望在500输出发束中绘制第一棵树。我的代码是
model <-randomForest(Species~.,data=iris,ntree=500)
答案 0 :(得分:1)
您可以使用getTree()
包中的randomForest
功能(官方指南:https://cran.r-project.org/web/packages/randomForest/randomForest.pdf)
在iris
数据集:
require(randomForest)
data(iris)
## we have a look at the k-th tree in the forest
k <- 10
getTree(randomForest(iris[, -5], iris[, 5], ntree = 10), k, labelVar = TRUE)
答案 1 :(得分:0)
您可以使用cforest
绘制如下图,我已将该值硬编码为5,您可以根据您的要求进行更改。
ntree <- 5
library("party")
cf <- cforest(Species~., data=iris,controls=cforest_control(ntree=ntree))
for(i in 1:ntree){
pt <- prettytree(cf@ensemble[[i]], names(cf@data@get("input")))
nt <- new("Random Forest BinaryTree")
nt@tree <- pt
nt@data <- cf@data
nt@responses <- cf@responses
pdf(file=paste0("filex",i,".pdf"))
plot(nt, type="simple")
dev.off()
}
cforest
是随机森林的另一种实现,不能说哪种更好,但总的来说,我们可以看到的差异很小。区别在于cforest
使用条件推断,与randomForest
包相比,我们将更多权重放在终端节点上,其中实现为终端节点提供相同的权重。
一般来说,cofrest
使用加权平均值,randomForest
使用正常平均值。您可以查看this。