我正在使用插入包> 来训练 K-Nearest Neigbors 算法。为此,我正在运行此代码:
Control <- trainControl(method="cv", summaryFunction=twoClassSummary, classProb=T)
tGrid=data.frame(k=1:100)
trainingInfo <- train(Formula, data=trainData, method = "knn",tuneGrid=tGrid,
trControl=Control, metric = "ROC")
如您所见,我有兴趣获取ROC的AUC参数。此代码运行良好,但返回测试错误(该算法用于调整模型的k参数)作为CrossValidation折叠的错误的平均值。我感兴趣的是,除了测试错误之外,返回训练错误(使用训练数据获得的错误的每个折叠的平均值)。我该怎么做?
谢谢
答案 0 :(得分:0)
你问的是多层次的坏主意。您将严重高估ROC曲线下的面积。考虑1-NN模型:每次都会有完美的预测。
为此,您需要再次运行train
并修改index
和indexOut
个对象:
library(caret)
set.seed(1)
dat <- twoClassSim(200)
set.seed(2)
folds <- createFolds(dat$Class, returnTrain = TRUE)
Control <- trainControl(method="cv",
summaryFunction=twoClassSummary,
classProb=T,
index = folds,
indexOut = folds)
tGrid=data.frame(k=1:100)
set.seed(3)
a_bad_idea <- train(Class ~ ., data=dat,
method = "knn",
tuneGrid=tGrid,
trControl=Control, metric = "ROC")
最高