2014-10-11 4 views
2

Я использую пакет для каретки для обучения K-Nearest Neigbors алгоритм. Для этого, я бегу этот код:Получение обучения Ошибка при использовании пакета Caret в R

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") 

Как вы можете видеть, я заинтересован в ППК получить параметр РПЦ. Этот код работает хорошо, но возвращает ошибку (которую алгоритм использует для настройки параметра k модели) как среднее значение ошибки скрепок CrossValidation. Я заинтересован в возврате, помимо ошибки тестирования, . Ошибка (среднее значение по каждой сумме ошибки, полученной с данными обучения). Как мне это сделать?

Спасибо

ответ

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") 

Макс

+1

Прежде всего, спасибо за ваш ответ. Вероятно, я не объяснил это правильно ... Мне нужно вернуть ОБА, ошибку обучения и ошибку теста, без запуска 2 раза. Не только ошибка поезда. Причина, по которой я хочу это сделать, - оценить, плохой результат из-за переобучения или недоустройства. – ivallesp

Смежные вопросы