插入火车功能 - 无法找到变量“optimismBoot”

时间:2017-09-15 17:24:23

标签: r parallel-processing r-caret

我是R和RStudio的新手,并且一直在尝试预测建模。以下列车功能在没有并行处理的情况下工作,但是当我实现doSNOW makeCluster时,我得到下面显示的与名为“optimismBoot”的变量相关的错误。我试图找到解决方案,尝试安装和卸载软件包,但没有任何作用。任何洞察力都赞赏。

 cl <- makeCluster(2, type = "SOCK")

 registerDoSNOW(cl)

 caret.cv <- train(ReturnedToMF ~ .,
                       data = trees.cetstrain,
                       method = "xgbTree",
                       tuneGrid = tune.grid,
                       trControl = cetstrain.control)
Error in e$fun(obj, substitute(ex), parent.frame(), e$data) : 
  unable to find variable "optimismBoot"

我在此网站上找到了以下链接,但它并没有提供使并行处理工作的解决方案:Caret on R spills "unable to find variable "optimismBoot"" error message

3 个答案:

答案 0 :(得分:23)

在Caret github页面上有对此问题的引用。 他们似乎最近修好了

见这里: https://github.com/topepo/caret/issues/706

在这种情况下,我想直接从github安装插入符应该可以解决问题。

devtools::install_github('topepo/caret/pkg/caret')

见这里: https://github.com/topepo/caret

请按照以下步骤操作:(我假设您正在使用RStudio)

  1. 照常安装devtools
  2. 运行命令devtools::install_github('topepo/caret/pkg/caret')并检查输出以确保从github刷新包
  3. 重新启动RStudio / R. package explorer中的插入符号版本与以前相同,但包将使用新代码
  4. 要确定它已更新,您可以使用caret:::nominalTrainWorkflow输出此更改的内部函数的源代码,并确保以下行位于export <- c("optimism_xy")。如果您现在就行,那么该行将optimismBoot而不是optimism_xy
  5. PS: Caret的最新版本日期为2017年9月7日。因此更新也应解决问题。

答案 1 :(得分:2)

当我更新新的插入符号版本是caret_6.0-77的时候我遇到了这个问题,现在我通过下载旧版本的插入包来解决它是来自cran档案包的caret_6.0-76看到这个链接单击here !,然后从工具菜单中使用Rstudio在本地安装软件包文件,然后从弹出菜单中选择它出现的安装包对话框选择从文件安装(.extension)

我希望这有用

答案 2 :(得分:0)

我会说使用example from the docs进行并行处理。

library(parallel)
library(doMC)
# use all cores except one
doMC::registerDoMC(cores = parallel::detectCores() - 1)

这就是你所要做的,然后你可以运行train(),它应该使用你指定的核心数。 我对它进行了一些调整,以便使用parallel库动态检测核心数量。