UUIDgenerate() 中的错误:DLL 模块太多。在 mlr3 包中

Error in UUIDgenerate() : Too many DLL modules. in mlr3 pakcage

我使用 mlr3 包自动调整 ML 模型(mlr3pipelines 图,更正确)。

很难重现问题,因为错误偶尔会发生。相同的代码有时 returns 出错,有时则不会。

这是代码片段

learners_l = list(
  ranger = lrn("classif.ranger", predict_type = "prob", id = "ranger"),
  log_reg = lrn("classif.log_reg", predict_type = "prob", id = "log_reg")
)

# create complete grapg
graph = po("removeconstants", ratio = 0.05) %>>%
  po("branch", options = c("nop_prep", "yeojohnson", "pca", "ica"), id = "prep_branch") %>>%
  gunion(list(po("nop", id = "nop_prep"), po("yeojohnson"), po("pca", scale. = TRUE), po("ica"))) %>>%
  po("unbranch", id = "prep_unbranch") %>>%
  learners_l %>>%
  po("classifavg", innum = length(learners))
graph_learner = as_learner(graph)
search_space = ps(
  prep_branch.selection = p_fct(levels = c("nop_prep", "yeojohnson", "pca", "ica")),
  pca.rank. = p_int(2, 6, depends = prep_branch.selection == "pca"),
  ica.n.comp = p_int(2, 6, depends = prep_branch.selection == "ica"),
  yeojohnson.standardize = p_lgl(depends = prep_branch.selection == "yeojohnson"),
  ranger.ranger.mtry.ratio = p_dbl(0.2, 1),
  ranger.ranger.max.depth = p_int(2, 6)
)
at_classif = auto_tuner(
  method = "random_search",
  learner = graph_learner,
  resampling = rsmp("cv", folds = 3),
  measure = msr("classif.acc"),
  search_space = search_space,
  term_evals = 20
)
at_classif$train(task_classif)

您可以使用任何您想要的任务。 我得到的错误是:

INFO  [15:05:33.610] [bbotk] Starting to optimize 6 parameter(s) with '<OptimizerRandomSearch>' and '<TerminatorEvals> [n_evals=20, k=0]' 
INFO  [15:05:33.653] [bbotk] Evaluating 1 configuration(s) 
Error in UUIDgenerate() : Too many DLL modules.

uuid 中有一个用于加载 RNG 函数的固定缓冲区,如果已经加载了太多的 DLL,它将失败。一个简单的 work-around 就是 运行

library(uuid)
UUIDgenerate()

在其他将强制提前加载 RNG 函数的包之前。

#12 现在跟踪潜在问题,应该在 uuid 1.0-3 中修复)。