いくつかのポイント:
(1)クロスバリデーションを使用すると、開催されたアウトデータセットではなく、データセット全体に(トレーニングデータセットに訓練された)モデルの精度を測定します。
(2)マトリックスを計算する前に、ハイパーパラメータ(C、ガンマ)の値を選択する必要があります。
(3)あなたは希望する確率行列を計算するためにキャレットパッケージを使うことができますが、それはマルチクラス分類問題なので、行列を計算する前に、確率を計算するクラスを選択する必要があります。
150個のデータポイントを持つアイリス上の次のコードを使用してください。そのうちの15ポイントが各折りたたみの検証データとしてランダムに選択されます。予測されるクラスがsetosaである確率を見付けて、最後の列がデータポイントの実際のクラスがsetosaかどうかを表すバイナリ列である150x11の行列を計算しましょう。
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