运行 具有许多 mtry 值的随机森林

Run randomForest with many mtry values

我是 randomForest R 包的新用户。我想 运行 随机森林分类 mtry =1,5,7.

的迭代

比如我想运行mtry =1100次和mtry=2100次。输出应显示每个 运行 的袋外错误(mtry =1 的 100 个结果和 mtry =2 的 100 个结果)。

我只会写 1 运行 的代码,我不知道如何 运行 迭代具有不同值的代码 mtry

rf  <-  randomForest(class_name  ~  .,  data=tr,ntree=1000, 
                     importance=TRUE, proximity=TRUE, mtry=2)

这是一种使用内置 iris 数据框的快速而肮脏的方法。下面的代码给出了 mtry 每个值的最终 OOB 错误率。

mtry = 1:4
oob = data.frame()

# Loop over each value of mtry and store result in a data frame
for (i in mtry) {

  rf1 <- randomForest(Species ~ ., data=iris, ntree=100, mtry=i) 

  result = data.frame(mtry=i, 
                      OOB=rf1[["err.rate"]][nrow(rf1[["err.rate"]]),"OOB"])
  oob = rbind(oob, result)
} 

oob
     mtry        OOB
OOB     1 0.04666667
OOB1    2 0.04000000
OOB2    3 0.04000000
OOB3    4 0.04000000

要保留 mtry 的每个值的所有 ntree OOB 错误,只需更改此:

OOB=rf1[["err.rate"]][nrow(rf1[["err.rate"]]),"OOB"])

为此:

OOB=rf1[["err.rate"]][ ,"OOB"])