在R中使用插入符号包获取训练错误
我正在使用插入符号包来训练一个K-最近邻算法。为此,我运行以下代码:在R中使用插入符号包获取训练错误,r,algorithm,machine-learning,analytics,r-caret,R,Algorithm,Machine Learning,Analytics,R Caret,我正在使用插入符号包来训练一个K-最近邻算法。为此,我运行以下代码: Control <- trainControl(method="cv", summaryFunction=twoClassSummary, classProb=T) tGrid=data.frame(k=1:100) trainingInfo <- train(Formula, data=trainData, method = "knn",tuneGrid=tGrid,
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")
Control在多个层面上,你所问的是一个坏主意。你将大大高估ROC曲线下的面积。考虑1-NN模型:你每次都会有完美的预测。p>
为此,您需要再次运行train
,并修改索引
和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")
库(插入符号)
种子(1)
首先,谢谢你的回答。也许我没有正确地解释它。。。我需要同时返回训练错误和测试错误,而不需要运行2次。不仅是火车的错误。我想这样做的原因是为了评估不良结果是否是由于过度拟合或拟合不足造成的。