• R语言
  • R多重for循环的加速问题?

在训练模型的时候,有时候需要对同一个模型,采用不同条件的训练,这时候需要使用多重for循环将不同的条件放入到同一个模型中,模型的整体训练速度比较慢,在网上查到一列资料,例如foreach + doParallel 多核并行方案,但是好像不能解决多重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一次就够了,然后就可以并行了

    CMCai0104 这里不仅仅是 几个参数的问题,还牵涉到数据集选取,模型的参数,参数的长度非常大,导致训练速度比较慢。

    多个参数应该也没问题,dataframe多加几列好了。

    个人感觉问题不大,函数里面套函数、函数里面选数据集都可以。

    具体没看到问题不好说。

    至于速度可以网上找找提速的小技巧,我推荐别用原生r,用Microsoft r可以默认使用多核(避免原生r语言写多核的麻烦)。

    1 年 后

    遇到类似问题,要更换数据集,几十个,都需要作随机森林模型训练,也是写循环实现吗?每一个模型保存的命名该怎么循环设置?