r - 绘制 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)
}
}
解决方案
正如所写的那样,您的循环将不起作用,您将改为捕获随机森林,每个森林都尝试了 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)))
推荐阅读
- prestashop - 问题 API 预习版 1.7
- c# - 在实体框架中使用 LINQ 对两个匿名类型列表进行外连接
- python - STATICFILES_DIRS 设置使我的管理小部件覆盖消失
- boost - 尝试在 ros 2、windows 10 上编译 cv_bridge 包时出现“找不到 Boost(缺少:python)(找到版本 1.58.0)”
- java - Eclipse 以调试模式暂停我的进程
- python-3.x - Python - 这段代码可以更高效吗?
- java - 我可以在 xcode 11.1、mac os Catalina 中编写 Java 代码吗?
- mysql - 在其他一些条件下如何选择最新的工资?MySQL
- python - 为什么在我的笔记本电脑上通过 tensorflow 运行预训练模型需要 30 分钟(太慢),而在其他台式机上需要 1 秒?
- android - 从服务打开屏幕