在训练模型的时候,有时候需要对同一个模型,采用不同条件的训练,这时候需要使用多重for循环将不同的条件放入到同一个模型中,模型的整体训练速度比较慢,在网上查到一列资料,例如foreach + doParallel 多核并行方案,但是好像不能解决多重for 循环的问题? 有没有哪位朋友有比较好的解决方案。
R多重for循环的加速问题?
- 已编辑
a = rep(1:3,each=2)
b = rep(5:6,times=3)
dataframe = data.frame('a'=a,'b'=b)
dataframe
apply(dataframe, 1, function(x){
a1 = x[[1]]
b1 =x[[2]]
return(c(a1,b1))
})
可以吗?
- 已编辑
不必要多重循环,可以像楼上一样将所有参数的组合构成一个参数的数据框(参考expand.grid()
)。这样对参数数据框做一层循环或者apply一次就够了,然后就可以并行了
多个参数应该也没问题,dataframe多加几列好了。
个人感觉问题不大,函数里面套函数、函数里面选数据集都可以。
具体没看到问题不好说。
至于速度可以网上找找提速的小技巧,我推荐别用原生r,用Microsoft r可以默认使用多核(避免原生r语言写多核的麻烦)。
1 年 后
遇到类似问题,要更换数据集,几十个,都需要作随机森林模型训练,也是写循环实现吗?每一个模型保存的命名该怎么循环设置?
foreach循环在10年前几乎刚发布后就支持嵌套了,请看文档 ……
https://cran.r-project.org/web/packages/foreach/vignettes/nested.html