在R - Foreach(DoSNOW)中组合并行randomForest

时间:2016-08-04 07:34:44

标签: r foreach random-forest parallel-foreach

Microsoft R Open 3.2.3 - Windows Server 2008 R2 Enterprise - 64位,8个内核和大量内存。

我使用4个核心执行randomForest,一切正常(比单线程快4倍),除了我无法合并结果。

我尝试了两次不同的代码:

1)我运行foreach而不是稍后合并结果:

library(randomForest)
library(doSNOW)

cl<-makeCluster(4)
registerDoSNOW(cl)
classif<-foreach(ntreeRF=rep(25,4), .packages="randomForest") %dopar% {
 randomForest(x=my_df,y=my_df[,answer],mtry=10,nodeSize=50,ntree=ntreeRF)
}
classif_comb<-combine(classif[[1]],classif[[2]],classif[[3]],classif[[4]])
#also tried: classif_comb<-do.call('combine',classif), but classif is a 'list' object
stop(cl)
#class of classif[[n]] is randomForest

2)这里我尝试在foreach函数中使用.combine参数

library(randomForest)
library(doSNOW)

cl<-makeCluster(4)
registerDoSNOW(cl)
classif<-foreach(ntreeRF=rep(25,4), .packages="randomForest",.combine=combine, .inorder=FALSE) %dopar% {
 randomForest(x=my_df,y=my_df[,answer],mtry=10,nodeSize=50,ntree=ntreeRF)
}
stop(cl)

在两者中我收到了相同的错误消息: &#34; combine()由于命名冲突而被重新命名为consolidate()&#34;

当我运行&#34;相同&#34;我的笔记本电脑中的代码,使用虹膜数据,一切正常。

另外,当我加载doSNOW库时,我收到一条警告消息:&#34;在R版本3.3.1和#34;下构建..但是combine()函数属于randomForest Package,所以我认为不是问题..

有什么想法吗?!

谢谢!

0 个答案:

没有答案