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)
在两者中,我都收到了相同的错误消息:“由于命名冲突重命名了 consolidate(),combine() 被贬低”
当我在笔记本电脑上使用虹膜数据运行“相同”代码时,一切正常。
此外,当我加载 doSNOW 库时,我收到一条警告消息:“在 R 版本 3.3.1 下构建”.. 但是 combine() 函数属于 randomForest 包,所以我认为这不是问题..
有任何想法吗?!
谢谢!!