Несколько моментов:
(1) С помощью перекрестной проверки вы измеряете точность модели (обученной на тренировочном наборе данных) на удерживаемых из набора данных, а не на весь набор данных.
(2) Перед вычислением матрицы вам нужно выбрать значения гиперпараметров (C, гамма).
(3) вы можете использовать пакет caret для вычисления желаемой матрицы вероятности, но поскольку это проблема классификации многоклассов, вам нужно выбрать, какой класс вы хотите вычислить для вероятности, перед вычислением матрицы.
Используйте следующий код на диафрагме, который имеет 150 точек данных, из которых 15 точек будут случайным образом выбраны в качестве данных валидации для каждой складки. Найдем вероятность предсказанного класса setosa и вычислим матрицу 150x11, где последний столбец представляет собой двоичный столбец, представляющий, является ли фактический класс точки данных setosa или нет.
K <- 10 # number of folds
set.seed(123)
library(caret)
library(reshape2)
trctl <- trainControl(method = "cv", number = K, savePredictions = TRUE, classProbs = TRUE)
res <- train(Species ~ ., data = iris, method="svmRadial", trControl = trctl)
res.C1 <- subset(res$pred, C==1)
head(res.C1)
pred obs setosa versicolor virginica rowIndex sigma C Resample
31 setosa setosa 0.980011940 0.009115859 0.010872201 17 1.421405 1 Fold01
32 setosa setosa 0.872285443 0.051664831 0.076049726 23 1.421405 1 Fold01
33 setosa setosa 0.983836684 0.007452339 0.008710978 35 1.421405 1 Fold01
34 setosa setosa 0.956874365 0.018767699 0.024357936 38 1.421405 1 Fold01
35 setosa setosa 0.979355342 0.009425609 0.011219049 39 1.421405 1 Fold01
36 versicolor versicolor 0.009445829 0.935110658 0.055443514 55 1.421405 1 Fold01
cbind.data.frame(round(dcast(res.C1, rowIndex~Resample, value.var = 'setosa'),2), setosa=res.C1$obs=='setosa')
rowIndex Fold01 Fold02 Fold03 Fold04 Fold05 Fold06 Fold07 Fold08 Fold09 Fold10 setosa
1 1 NA NA NA NA NA NA NA NA NA 0.99 TRUE
2 2 NA NA NA NA NA NA NA NA 0.98 NA TRUE
3 3 NA NA NA NA NA 0.98 NA NA NA NA TRUE
4 4 NA NA NA NA NA NA 0.98 NA NA NA TRUE
5 5 NA NA NA 0.99 NA NA NA NA NA NA TRUE
6 6 NA 0.98 NA NA NA NA NA NA NA NA FALSE
7 7 NA NA NA NA 0.97 NA NA NA NA NA FALSE
8 8 NA NA 0.99 NA NA NA NA NA NA NA FALSE
9 9 NA 0.96 NA NA NA NA NA NA NA NA FALSE
10 10 NA 0.98 NA NA NA NA NA NA NA NA FALSE
# ... ...
145 145 NA NA NA NA NA NA NA NA 0.01 NA FALSE
146 146 NA NA NA 0.01 NA NA NA NA NA NA FALSE
147 147 NA NA NA 0.01 NA NA NA NA NA NA FALSE
148 148 NA NA NA NA NA NA NA NA NA 0.01 FALSE
149 149 NA NA NA NA NA NA NA NA 0.02 NA FALSE
150 150 NA NA NA NA NA NA NA 0.01 NA NA FALSE