> cv.ctrl <- trainControl(method = \"repeatedcv\", repeats = 3,
+ summaryFunction = twoClassSummary,
+ classPro
If you changed the values in y to "YES" and "NO" instead of 1 and zero respectively, then the code will run.
y=ifelse(train.batch$y==0,"No","Yes")
Apparently this error is due to the fact that my y is not a Factor.
Following code works fine:
library(caret)
library(mlbench)
data(Sonar)
ctrl <- trainControl(method = "cv",
summaryFunction = twoClassSummary,
classProbs = TRUE)
set.seed(1)
gbmTune <- train(Class ~ ., data = Sonar,
method = "gbm",
metric = "ROC",
verbose = FALSE,
trControl = ctrl)
Then doing:
Sonar$Class = as.numeric(Sonar$Class)
and same code throws the error:
> gbmTune <- train(Class ~ ., data = Sonar,
+ method = "gbm",
+ metric = "ROC",
+ verbose = FALSE,
+ trControl = ctrl)
Error in evalSummaryFunction(y, trControl, classLevels, metric, method) :
train()'s use of ROC codes requires class probabilities. See the classProbs option of trainControl()
In addition: Warning message:
In train.default(x, y, weights = w, ...) :
cannnot compute class probabilities for regression
But caret train documentation says:
y a numeric or factor vector containing the outcome for each sample.