首页 > 解决方案 > 绘制 mtry 和 n_tree 值以及准确性

问题描述

我必须用所有 3 个值在图上绘制 ntree 和 mtry 超参数值以及精度,并找出这 3 个值的交集值以最终确定正在传递的范围内的最佳值

for(i in seq(1,100))
{    
    ntried[i]<-i
    for (j in seq(1,10)) 
    {
    mtried[j]<-j    
    rf_mod1 <- randomForest(target~., data = heartdb, ntree = 
    ntried[i] , mtry= mtried[j] , importance= TRUE )

    t<-predict(rf_mod1,data = heartdb)
    p<-table(actual =heartdb$target, prediction = t )
    accuracy[i]<-sum(diag(p))/sum(p)

   }
}

标签: rplotrandom-forest

解决方案


正如所写的那样,您的循环将不起作用,您将改为捕获随机森林,每个森林都尝试了 10 棵树。试试这个

accuracy <- matrix(rep( 0, times = 1000), ncol = 10)
for(i in seq(1,100))
{    
    ntried <- i
    for (j in seq(1,10)) 
    {
    mtried <- j    
    rf_mod1[j] <- randomForest(target~., data = heartdb, ntree = 
    ntried , mtry= mtried , importance= TRUE )

    t<-predict(rf_mod1,data = heartdb)
    p<-table(actual =heartdb$target, prediction = t )
    accuracy[i,j]<-sum(diag(p))/sum(p)
   }

}

现在每行准确度包含 10 个准确度。按行搜索最大值:

apply(accuracy, 1, max) 

您甚至可以绘制每个级别的最大值ntried

plot(seq(1,100), apply(accuracy, 1, max))

最后,您可以调用以下命令返回包含所有 1000 个森林的最大准确度的行(ntried 级别):

which(apply(accuracy, 1, max) == max(apply(accuracy, 1, max)))

推荐阅读