使用许多mtry值运行randomForest

时间:2015-09-29 16:43:37

标签: r random-forest

我是randomForest R套餐的新用户。我想为mtry =1,5,7的迭代运行randomForest分类。

例如,我想运行mtry =1 100次,mtry=2 100次。输出应该显示每次运行的袋子错误(mtry = 100的结果为100,mtry的结果为100)。

我只能为1次运行编写代码,我不知道如何使用mtry的不同值运行代码迭代。

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

1 个答案:

答案 0 :(得分:4)

这是使用内置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

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

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

对此:

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