我从这个stackoverflow问题中获得了以下代码。 caret train() predicts very different then predict.glm()
以下代码产生错误。 我正在使用插入符号6.0-52。
library(car); library(caret); library(e1071)
#data import and preparation
data(Chile)
chile <- na.omit(Chile) #remove "na's"
chile <- chile[chile$vote == "Y" | chile$vote == "N" , ] #only "Y" and "N" required
chile$vote <- factor(chile$vote) #required to remove unwanted levels
chile$income <- factor(chile$income) # treat income as a factor
tc <- trainControl("cv", 2, savePredictions=T, classProbs=TRUE,
summaryFunction=twoClassSummary) #"cv" = cross-validation, 10-fold
fit <- train(chile$vote ~ chile$sex +
chile$education +
chile$statusquo ,
data = chile ,
method = "glm" ,
family = binomial ,
metric = "ROC",
trControl = tc)
运行此代码会产生以下错误。
Something is wrong; all the ROC metric values are missing:
ROC Sens Spec
Min. : NA Min. :0.9354 Min. :0.9187
1st Qu.: NA 1st Qu.:0.9354 1st Qu.:0.9187
Median : NA Median :0.9354 Median :0.9187
Mean :NaN Mean :0.9354 Mean :0.9187
3rd Qu.: NA 3rd Qu.:0.9354 3rd Qu.:0.9187
Max. : NA Max. :0.9354 Max. :0.9187
NA's :1
Error in train.default(x, y, weights = w, ...) : Stopping
In addition: Warning message:
In nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo, :
There were missing values in resampled performance measures.
有谁知道问题是什么,或者可以重现/不重现此错误。我已经看到了此错误消息的其他答案,该消息表明这与每个交叉验证折叠中没有类的表示有关,但这不是问题,因为折叠数设置为2。
谢谢。
答案 0 :(得分:1)
看起来我需要安装并加载pROC包。
install.packages( “PROC”) 图书馆(pROC)
答案 1 :(得分:0)
您应该使用
进行安装
install.packages("caret", dependencies = c("Imports", "Depends", "Suggests"))
获得大多数默认包。如果缺少特定的建模包,代码通常会提示您安装它们。
答案 2 :(得分:0)
我知道我迟到了,但我认为你需要在火车控制中设置classProbs = TRUE
。
答案 3 :(得分:0)
使用参数method = "glm", family = binomial
时,您正在使用逻辑回归。
在这种情况下,必须确保目标变量(chile $ vote)仅具有2个因子水平,因为逻辑回归仅执行二进制分类。