如何构造多类变量的混淆矩阵

sjd*_*jdh 4 r confusion-matrix

假设我有一个y具有n个级别的因子变量,我可以获得预测和实际结果.如何构建混淆矩阵?

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))
Run Code Online (Sandbox Code Playgroud)

对于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
Run Code Online (Sandbox Code Playgroud)

现在必须将其带入矩阵的形状.

背景

混淆矩阵具有水平标签"实际类"和垂直标签"预测类".矩阵元素简单地计算如下:

element(1,1)=实际类的计数数是A,预测类是A.

element(1,2)=实际类的计数数是A,预测类是B.

等等

sjd*_*jdh 7

只需使用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
Run Code Online (Sandbox Code Playgroud)


A5C*_*2T1 7

你应该能够做你想做的事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
Run Code Online (Sandbox Code Playgroud)