doParallel вычисление с использованием каретного сообщения об ошибке - PullRequest
0 голосов
/ 17 февраля 2019

Я пытался реализовать многоядерную обработку с библиотекой (doParallel), но почему-то продолжала появляться одна ошибка.Я сомневаюсь, что это ошибка, сгенерированная из пакета doParallel.Ниже приведен мой код (я пропускаю часть обработки данных, чтобы сделать код простым):

library(caret)
library(doParallel)
cores=detectCores()
cl <- makeCluster(cores[1]-2)
registerDoParallel(cl)


ctrl<-trainControl(method='cv',number=5, classProbs = T, 
               summaryFunction = twoClassSummary, allowParallel = T)

#############
#XGBoost Tree
#############
xgb_grid<-expand.grid(
  nrounds = 500,
  max_depth = 5,
  eta = c(0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12),
  gamma = 0.3,
  colsample_bytree = 0.25,
  min_child_weight = 2,
  subsample = 0.5
)

xgb <- caret::train(y ~ .,                 
             data = train,        
             method = "xgbTree",    
             trControl = ctrl,      
             tuneGrid = xgb_grid,   
             metric = "ROC",        
             verbose = TRUE)
stopCluster(c1)

И я получил ошибку ниже:

Error in e$fun(obj, substitute(ex), parent.frame(), e$data) : 
  worker initialization failed: package or namespace load failed for ‘caret’ 
in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = 
vI[[j]]):
 there is no package called ‘generics’

Я не уверен, в чем причина,Кажется, у doParallel есть проблема с запуском каретки?Я знаю, что с помощью trainControl функция allowParallel позволяет моделям использовать многоядерный режим, если это необходимо, но не для всех моделей.Вот почему я хочу заставить карет использовать многоядерный для обучения модели.

...