Я пытался реализовать многоядерную обработку с библиотекой (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 позволяет моделям использовать многоядерный режим, если это необходимо, но не для всех моделей.Вот почему я хочу заставить карет использовать многоядерный для обучения модели.