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

多类多标签混淆矩阵,其中预测和标签是多个热向量

时仰岳
2023-03-14

我需要计算表示为多个热向量的标签和预测的混淆矩阵。sklearn似乎不支持这种情况。

这是我所拥有的一个例子。假设有三个类,'a',b','c';目标/标签为:

l1 = [1, 0 ,1, 0, 0]; of class a
l2 = [1, 0 ,1, 0, 1]; of class b
l3 = [1, 0 ,0, 0, 0]; of class a
l4 = [0, 0 ,0, 0, 0]; of class c

因此,我们有标签矩阵:

L = np.array([ [1, 0 ,1, 0, 0], 
[1, 0 ,1, 0, 1], 
[1, 0 ,0, 0, 0],  
[0, 0 ,0, 0, 0]] )

预测是:

p1 = [1, 0 ,1, 0, 0]; of class a
p2 = [1, 0 ,1, 0, 0]; of class b
p3 = [1, 1 ,0, 0, 0]; of class a
p4 = [0, 1 ,0, 0, 0]; of class c

预测矩阵为:

P = np.array([ [1, 0 ,1, 0, 0], 
[1, 0 ,1, 0, 0], 
[1, 1 ,0, 0, 0],  
[0, 1 ,0, 0, 0]] )

我希望输出是一个3x3混淆矩阵,大致如下所示:

   A  B  C
A  2  0  0  
B  0  0  1
C  0  1  0

我使用skLearningaccuracy_score来估计分类精度。然而,尽管accuracy_score正在为此类标签的准确性而工作,但skLearning混淆矩阵不支持上述场景。是否有任何替代skLearning

另一个问题似乎给出了三个混淆矩阵,这不是我要寻找的情况。

共有1个答案

邵飞白
2023-03-14

我认为准确性不是在这种情况下使用的正确指标。您可以使用roc_auc_scoresklearn.metrics.ranking

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

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

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

  • 我正在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预测

  • 我得到了混淆矩阵,但是因为我的实际数据集有很多分类类别,所以很难理解。 范例- 但是如何打印标签/列名以便更好地理解呢? 我甚至试过这个- 需要帮忙吗?

  • 校验者: @溪流-十四号 @大魔王飞仙 翻译者: @v Warning All classifiers in scikit-learn do multiclass classification out-of-the-box. You don’t need to use the sklearn.multiclass module unless you want to experiment with