Общая точность в e1071 :: svm () - PullRequest
0 голосов
/ 16 октября 2019

Как вычисляется полная точность в e1071 :: svm ()? Это не то же самое, что рассчитано из таблицы путаницы:

> x <- subset(iris, select = -Species)
> y <- iris$Species
> model <- svm(x, y,cross=10)
> model$tot.accuracy
[1] 96
> caret::confusionMatrix(y,model$fitted)
Confusion Matrix and Statistics

            Reference
Prediction   setosa versicolor virginica
  setosa         50          0         0
  versicolor      0         48         2
  virginica       0          2        48

Overall Statistics

               Accuracy : 0.9733          
  ...

1 Ответ

0 голосов
/ 16 октября 2019

Общая точность - это точность перекрестной проверки, полученная во время процедуры подгонки. Для каждого разделения данных модель соответствует и рассчитывается точность соответствующего набора данных проверки.

Индивидуальная точность может быть получена из

cv_accuracies <- model$accuracies
all.equal(mean(cv_accuracies), model$tot.accuracy)
[1] TRUE

Обратите внимание, что при перекрестной проверке данные разбиваются на 10 различных обучающих и проверочных пар, где набор проверки не используется в фитинге. Процедура, эта точность будет отличаться по сравнению с точностью при прогнозировании окончательной модели для всего учебного набора.

sum(fitted(model) == y)/length(y)
[1] 0.97333333
mean(cv_accuracies)
[1] 96.66667

(обратите внимание, один стандарт умножается на 100)

...