2016-11-29 22 views
1
私は、各クラスのクロス検証確率の予測をしたい

R.取得クロス検証確率予測

e1071中のパッケージを使用したマルチクラス分類を行うためにSVMを使用しています

およびトレーニングの各データポイントセット。すなわち、N×Kのクロスバリデーション確率行列が必要である。

どうすればいいですか?

答えて

0

いくつかのポイント:

(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 
関連する問題