举个例子,我们使用鸢尾花数据集。
library(randomForest)data(iris)smp_size <- floor(0.75 * nrow(iris))train_ind <- sample(seq_len(nrow(iris)), size = smp_size)train <- iris[train_ind, ]test <- iris[-train_ind, ]model <- randomForest(Species~., data = train, ntree=10)
如果我使用randomForest包中的getTree()函数,我可以毫不费力地提取第三棵树,例如。
treefit <- getTree(model, 3)
但是,我如何使用它(即treefit)来对测试集进行预测呢?比如说,像“predict()”一样,有没有一个函数可以直接做到这一点?
提前感谢您
回答:
您可以直接使用randomForest包中的predict
函数,通过将predict.all
参数设置为TRUE
来实现这一点。
请查看以下可复现的代码,了解如何使用它:另请参阅此处的predict.randomForest帮助页面。
library(randomForest)set.seed(1212)x <- rnorm(100)y <- rnorm(100, x, 10)df_train <- data.frame(x=x, y=y)x_test <- rnorm(20)y_test <- rnorm(20, x_test, 10)df_test <- data.frame(x = x_test, y = y_test)rf_fit <- randomForest(y ~ x, data = df_train, ntree = 500)# 您会得到一个列表,包含总体预测和各个树的预测rf_pred <- predict(rf_fit, df_test, predict.all = TRUE)rf_pred$individual[, 3] # 获取第三棵树对测试数据的预测