昨天我更新了我的R包,从那以后并列执行列车功能失败了.
似乎从工作者中调用的某些函数不可用.这些函数至少是flatTable和probFunction.
我在生产机器上遇到了这个问题,并且能够在干净的Windows 7 x64 VM上重现它.
我在下面添加了一个最小的工作示例 亲爱的stackoverflow用户:非常感谢!
# R 3.0.2 x64, RStudio Version 0.98.490, Windows 7 x64
data(iris)
library(caret) # 6.0-21
library(doParallel) # 1.0.6
model <- "rf"
# Fail
?probFunction
?flatTable
fitControl <- trainControl(
method = "repeatedcv"
, number = 5 ## 5-fold CV
, repeats = 1 ## repeated one times
, verboseIter =TRUE
)
#### Sequential Version ####
# Runs
train(Species ~ ., data = iris, method = model, trControl = fitControl)
#### Parallelized version ####
# …Run Code Online (Sandbox Code Playgroud) 来自插入符R包的parRF不适合我使用多个核心,这是非常具有讽刺意味的,因为parRF中的par表示并行.我在Windows机器上,如果这是一个相关的信息.我检查过我正在使用最新的关于插入符号和doParallel的最新内容.
我做了一个最小的例子并给出了下面的结果.有任何想法吗?
源代码
library(caret)
library(doParallel)
trCtrl <- trainControl(
method = "repeatedcv"
, number = 2
, repeats = 5
, allowParallel = TRUE
)
# WORKS
registerDoParallel(1)
train(form = Species~., data=iris, trControl = trCtrl, method="parRF")
closeAllConnections()
# FAILS
registerDoParallel(2)
train(form = Species~., data=iris, trControl = trCtrl, method="parRF")
closeAllConnections()
Run Code Online (Sandbox Code Playgroud)
产量
> library(caret)
> library(doParallel)
>
> trCtrl <- trainControl(
+ method = "repeatedcv"
+ , number = 2
+ , repeats = 5
+ , allowParallel = TRUE
+ …Run Code Online (Sandbox Code Playgroud)