4

n レベルの因子変数yがあり、予測と実際の結果の両方が利用可能であるとします。混同行列を作成するにはどうすればよいですか?

set.seed(12345)
y_actual = as.factor(sample(c('A','B', 'C', 'D', 'E'), 100, replace = TRUE))
set.seed(12346)
y_predict = as.factor(sample(c('A','B', 'C', 'D', 'E'), 100, replace = TRUE))

この質問は、n = 2 の場合について既に回答されています。

R: 予測モデルの混同行列を作成する方法は?

私が試したこと

これは私がどこまで来たかです

ones = data.frame(total = rep(1,100));
confusion = aggregate(ones, list(Prediction = predict, Reality = real), sum, a.action=0)
confusion

  Prediction Reality total
1          A       A    12
2          B       A     5
3          C       A    15
4          A       B    15
5          B       B     7
6          C       B     8
7          A       C    12
8          B       C    16
9          C       C    10

これを行列の形にする必要があります。

バックグラウンド

混同行列には、水平ラベルとして「実際のクラス」、垂直ラベルとして「予測クラス」があります。行列の要素は、単純に次のようにカウントされます。

要素 (1,1) = 実際のクラスが A で、予測されるクラスが A のカウント数

要素 (1,2) = 実際のクラスが A で予測クラスが B のカウント数

4

2 に答える 2

9

あなたがやりたいことができるはずですtable

table(y_actual, y_predict)
#         y_predict
# y_actual A B C D E
#        A 4 3 4 2 8
#        B 7 1 3 6 2
#        C 3 7 1 0 4
#        D 3 6 6 4 6
#        E 6 5 5 1 3
于 2014-08-26T03:53:00.823 に答える
8

confusionMatrixパッケージのキャレットから簡単に使用できます

require(caret)
confusionMatrix(y_actual, y_predict)



          Reference
Prediction  A  B  C
         A 12  5 15
         B 15  7  8
         C 12 16 10
于 2014-08-26T03:47:23.923 に答える