我使用自制程序代码长时间使用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"
答案 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}}意图设置为trainControl
或TRUE
,而不是FALSE
。看起来你只是将它与'final'
参数混合在一起,这个参数就是这个参数。
returnResamp
和0
级别名称交给它时插入符号的原因。在这种情况下,使用简单的1
应该可以解决问题。
答案 2 :(得分:0)
感谢@Sumedh,我发现问题可能不在我的代码中,而且我更新了所有的软件包。
惊喜!现在它有效。所以我毕竟不是疯了。
对所有的消防演习都很抱歉。