Parellize симуляции моделирования xgboost - PullRequest
0 голосов
/ 04 сентября 2018

Мне нужно запустить несколько симуляций моделей. Я пытаюсь запустить разные симуляции на разных ядрах и сохранить результаты в глобальной среде. У меня есть код ниже, который не работает. Например, мне нужно запустить xgboost три раза (с теми же параметрами, только 3 повторных запуска, и я хочу запустить три симуляции на разных ядрах и вернуть imp_df_i в глобальный env.

cores=detectCores()
cl <- makeCluster(cores[1]-1) #not to overload your computer
registerDoParallel(cl)

finalMatrix <- foreach(i=1:3, .combine=cbind) %dopar% {
require(xgboost)

  xgb_1 = xgboost(dtrain,
                  params = xgb_params_1,
                  nrounds = 3,                                                 # max number of trees to build
                  verbose = TRUE,                                         
                  print_every_n = 1,
                  early_stop_round = 10)                                          # stop if no improvement within 10 trees

  col_names = attr(tr.x, ".Dimnames")[[2]]
  imp = xgb.importance(col_names, xgb_1)               
  imp_df=data.frame(imp)
  assign(paste("imp_df",i, sep = "_"),imp_df,envir = .GlobalEnv )

  }
#stop cluster
stopCluster(cl)
...