R随机森林集合与个体预测

zsbz8rwp  于 2023-01-06  发布在  其他
关注(0)|答案(1)|浏览(119)

请考虑这个随机森林回归估计的最小可重复性示例

library(randomForest)

# fix missing data
airquality <- na.roughfix(airquality)

set.seed(123)
#fit the random forest model
rf_fit <- randomForest(formula = Ozone ~ .,  data = airquality)

#define new observation
new <- data.frame(Solar.R=250, Wind=8, Temp=70, Month=5, Day=5)

set.seed(123)
#use predict all on new observation
rf_predict<-predict(rf_fit, newdata=new, predict.all = TRUE)

rf_predict$aggregate

library(tidyverse)

predict_mean <- rf_predict$individual %>% 
  as_tibble() %>% 
  rowwise() %>% 
  transmute(avg = mean(V1:V500))

predict_mean

我希望rf_predict$aggregatepredict_mean得到相同的值
关于这个假设,我错在哪里,为什么错了?
我的最终目标是得到预测值的置信区间。

zrfyljdw

zrfyljdw1#

我认为您的代码需要包含一个c_across()调用,以便正确执行计算:
?c_across文档告诉我们:
c_across()被设计为与rowwise()一起使用,以便于执行按行聚合。

predict_mean <- rf_predict$individual %>% 
  as_tibble() %>% 
  rowwise() %>% 
  transmute(avg = mean(c_across(V1:V500)))

>predict_mean
[1] 30.5

An answer to a previous question,指出mean()不能处理data.frame。在您的代码中,提供给mean()的数据是**一个rowwise_df类的行 Dataframe 。c_across允许行中的数据作为向量呈现给mean()(我认为)。

相关问题