2016-03-16 2 views
1

Я не знаю, как извлечь ошибку обучения (т. Е. Ошибку, полученную в наборе обучения), используя пакет caret в R. Например, у меня есть следующие модели:Частота ошибок обучения в `caret`

data(iris); 
library(caret); 
model<-train(Species~., data=iris, method='knn', trControl=trainControl(method='cv', number=10), tuneGrid=data.frame(k=20)) 

То, что я хочу сделать, это посмотреть, насколько хорошо модель выполнена на обучающих данных.

Я знаю, что могу получить производительность на тестовом наборе для каждой складки, используя model$results, но это не то, что я хочу. Я хочу показать, как ошибка обучения способ чрезмерно оптимистичный, но я не могу этого сделать. Документация здесь:

http://www.inside-r.org/packages/cran/caret/docs/train

утверждает, что

results: кадр данных частота ошибок обучения и значения настройки параметров.

который не правда, потому что в моем случае, model$results$Accuracy всегда точно равно значению mean(model$resample$Accuracy). Это значение ошибки . Я хочу, чтобы тренировка . Есть ли способ получить это?

+1

увидеть это [пост] (http://stats.stackexchange.com/questions/114168/how-to-get-sub-training -and-sub-test-from-cross-validation-in-caret) – phiver

+0

@phiver Я действительно не вижу, как это сообщение полезно. Это ничего мне не говорит и не отвечает на вопрос. – 5xum

ответ

1

Я думаю, что вы просите что-то вроде этого:

model3<-train(Species~., data=iris, method='knn', trControl=trainControl(method='none'), tuneGrid=data.frame(k=20)) 
testPred <- predict(model3, iris) 
postResample(testPred, iris$Species) 

Accuracy Kappa 
    0.98  0.97 
+0

Я полагаю, да. Но скажите, что у меня больше tuneGrid, и я хочу точность обучения для каждого 'k' между' 1' и '20'. Разве это невозможно просто с умным призывом «тренироваться»? – 5xum

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