很难获得带重复CV的Caret GLM来执行

时间:2016-06-15 14:26:51

标签: r r-caret cross-validation

我使用自制程序代码长时间使用10X10倍的cv逻辑模型,但最近我们认为让插入符号为我处理杂乱的东西可能会很好。

不幸的是,我似乎错过了一些必须能够发挥作用的细微差别。

具体来说,我不断收到此错误:

>Error in { : task 1 failed - "argument is not interpretable as logical"

请看看你是否可以接受我做错的事情......

提前致谢!

数据集位于here

dataset <- read.csv("Sample Data.csv")

library(caret)

my_control <- trainControl(
  method="repeatedcv",
  number=10,
  repeats = 10,
  savePredictions="final",
  classProbs=TRUE
)

下一段代码放在那里让插入符号开心。我的原始因变量是一个二元,我已经变成了一个因子,但是插入符号的因子级别为“0”和“1”。不知道为什么。

dataset$Temp <- "Yes"
dataset$Temp[which(dataset$Dep.Var=="0")] <- "No"
dataset$Temp <- as.factor(dataset$Temp)

现在我(试着)让插头为我运行10X10倍的glm模型......

testmodel <- train(Temp ~ Param.A + Param.G + Param.J + Param.O, data = dataset,
             method = "glm",
             trControl = my_control,
             metric = "Kappa")

testmodel


> Error in { : task 1 failed - "argument is not interpretable as logical"

3 个答案:

答案 0 :(得分:1)

我没有足够的声誉来发表评论,因此我将此作为答案发布。我运行了你的确切代码,它对我来说很好,两次。我确实得到了这个警告:

glm.fit: fitted probabilities numerically 0 or 1 occurred

根据作者的说法,此错误与savePredictions参数有关。看看这个问题: https://github.com/topepo/caret/issues/304

答案 1 :(得分:1)

虽然你已经通过更新R和插入符号找到了修复程序,但我想指出代码中有一个错误导致错误,我可以在这里用旧版本重现R和插入符号:

savePredictions的{​​{1}}意图设置为trainControlTRUE,而不是FALSE。看起来你只是将它与'final'参数混合在一起,这个参数就是这个参数。

BTW:R和插入符号对因子的级别名称有限制,这就是为什么当你将因变量的returnResamp0级别名称交给它时插入符号的原因。在这种情况下,使用简单的1应该可以解决问题。

答案 2 :(得分:0)

感谢@Sumedh,我发现问题可能不在我的代码中,而且我更新了所有的软件包。

惊喜!现在它有效。所以我毕竟不是疯了。

对所有的消防演习都很抱歉。