当前位置: 首页 > 知识库问答 >
问题:

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

卫俊力
2023-03-14

假设我有一个具有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的计数数

共有2个答案

欧阳成弘
2023-03-14

只需使用软件包插入符号中的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
令狐嘉运
2023-03-14

您应该能够使用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
 类似资料:
  • 我正在对实际数据和来自分类器的预测数据进行多标签分类。实际数据包括三类(c1、c2和c3),同样,预测数据也包括三类(c1、c2和c3)。数据如下 在多标签分类中,文档可能属于多个类别。在上述数据中,1表示文档属于特定类,0表示文档不属于特定类。 第一行Actual\u数据表示文档属于c1类和c2类,不属于c3类。类似地,第一行predicted\u数据表示文档属于类别c1、c2和c3。 最初我使

  • 我正在使用分类器的多类多标签输出。类的总数为14,实例可以关联多个类。例如: 我现在制作混淆矩阵的方式: 输出如下: 现在,我不确定sklearn的混淆矩阵是否能够处理多标签多类数据。谁能帮我一下吗?

  • 我试图弄清楚如何使用神经网络为多标签分类任务生成混淆矩阵。我之前设法使用函数“交集”计算准确性,因为对此我不关心任何排序。 然而,为了计算混淆矩阵,我确实关心预测/标签的索引顺序。由于标签的值始终相同(

  • 对不起,我是新来WEKA,刚刚学习。 在我的决策树(J48)分类器输出中,有一个混淆矩阵: 我如何读取这个矩阵?

  • 我正在y_test并y_pred混淆矩阵。我的数据用于多标签分类,因此行值是一种热编码。 我的数据有30个标签,但在输入混淆矩阵后,输出只有11行和列,这让我很困惑。我想我应该有一辆30X30的。 它们的格式是numpy数组。(y\u test和y\u pred是我使用dataframe.values将其转换为numpy数组的数据帧) y\U测试。形状 y_test y\u预测。形状 y\u预测

  • 我需要计算表示为多个热向量的标签和预测的混淆矩阵。sklearn似乎不支持这种情况。 这是我所拥有的一个例子。假设有三个类,和;目标/标签为: 因此,我们有标签矩阵: 预测是: 预测矩阵为: 我希望输出是一个混淆矩阵,大致如下所示: 我使用来估计分类精度。然而,尽管正在为此类标签的准确性而工作,但混淆矩阵不支持上述场景。是否有任何替代? 另一个问题似乎给出了三个混淆矩阵,这不是我要寻找的情况。