2014-01-09 3 views
7

gestern habe ich meine R-Pakete aktualisiert und seitdem versagt die parallele Ausführung der Zugfunktion.Parallele Ausführung von Zug in Caret schlägt fehl mit Funktion nicht gefunden

Es scheint, dass einige Funktionen, die von den Arbeitern aufgerufen werden, nicht verfügbar sind. Diese Funktionen sind mindestens flatTable und probFunction.

Ich habe diese Probleme auf meiner Produktionsmaschine und konnte es auf einem sauberen Windows 7 x64 VM reproduzieren.

Ich habe unten ein minimales Arbeitsbeispiel hinzugefügt. Sehr geehrte Benutzer von stackoverflow: Jede Hilfe ist willkommen!

# 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 #### 

# Fails with 
# Error in e$fun(obj, substitute(ex), parent.frame(), e$data) : 
# worker initialization failed: Error in eval(expr, envir, enclos): could not find function "flatTable" 
cl <- makeCluster(3) 
registerDoParallel(cl) 

train(Species ~ ., data = iris, method = model, trControl = fitControl) 

stopCluster(cl) 

# Fails with 
# Error in { : task 1 failed - "could not find function "probFunction"" 
fitControl <- trainControl(
    method = "repeatedcv" 
    , number = 5 ## 5-fold CV 
    , repeats = 1 ## repeated one times 
    , verboseIter =TRUE 
    , classProbs = TRUE 
) 

cl <- makeCluster(3) 
registerDoParallel(cl) 

train(Species ~ ., data = iris, method = model, trControl = fitControl) 

stopCluster(cl) 

#### Again sequential version #### 

# Fails with 
# Error in summary.connection(connection) : invalid connection 
train(Species ~ ., data = iris, method = model, trControl = fitControl) 

R Session Info

R version 3.0.2 (2013-09-25) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 

locale: 
[1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252 LC_MONETARY=German_Germany.1252 
[4] LC_NUMERIC=C     LC_TIME=German_Germany.1252 

attached base packages: 
[1] parallel stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] e1071_1.6-1  class_7.3-9  randomForest_4.6-7 doParallel_1.0.6 iterators_1.0.6 
[6] foreach_1.4.1  caret_6.0-21  ggplot2_0.9.3.1 lattice_0.20-23 

loaded via a namespace (and not attached): 
[1] car_2.0-19   codetools_0.2-8 colorspace_1.2-4 compiler_3.0.2  dichromat_2.0-0 
[6] digest_0.6.4  grid_3.0.2   gtable_0.1.2  labeling_0.2  MASS_7.3-29  
[11] munsell_0.4.2  nnet_7.3-7   plyr_1.8   proto_0.3-10  RColorBrewer_1.0-5 
[16] reshape2_1.2.2  scales_0.2.3  stringr_0.6.2  tools_3.0.2  

Antwort

6

Der Fehler, der Sie bekommen durch einen Fehler in caret 6,0-21 verursacht wird, wenn doParallel, doSNOW und doMPI verwenden. Es wurde in Version 6.0-22 in R-forge behoben, wurde aber noch nicht für CRAN freigegeben. Wenn Sie für die neue Version warten möchten nicht freigegeben werden, können Sie:

  1. Herunterstufung CARET 5.x
  2. Installieren caret 6,0-22 von R-Schmiede
  3. installieren und verwenden doSNOW 1.0.10 von R-Schmiede statt doParallel

Das Problem wird durch eine Änderung der CRAN Politik verursacht wurde, die die Verwendung des ::: Betreibers verbietet, auch wenn aus dem gleichen Paket nicht ausgeführten Funktionen verweisen.


aktualisieren

Caret 6,0-22 wurde am 2014.01.18 CRAN freigegeben. Dies sollte das gemeldete Problem mithilfe von Caret mit doSNOW und ähnlichen parallelen Backends beheben.

+0

Vielen Dank. Ich habe die Option 1, das Downgrade, angewendet. – Ahue

+0

@Ahue Ich werde die Antwort aktualisieren, sobald die feste Version auf CRAN ist. –

+2

Mehr als ein Jahr später habe ich dieses Problem mit der aktuellen Version von 'Caret' ... '> packageVersion ("Caret") [1] '6.0.41'' –

Verwandte Themen