glm with caret package生成"在重采样性能指标中缺少值"

时间:2015-08-30 03:37:09

标签: r-caret

我从这个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。

谢谢。

4 个答案:

答案 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个因子水平,因为逻辑回归仅执行二进制分类。