首页 > 解决方案 > 多类多标签混淆矩阵,其中预测和标签是多热向量

问题描述

我需要计算表示为多热向量的标签和预测的混淆矩阵。似乎 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

sklearn accuracy_score用来估计分类精度。但是,尽管accuracy_score正在努力提高此类标签的准确性,但sklearn混淆矩阵不支持上述情况。有没有其他选择sklearn

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

标签: pythonscikit-learnconfusion-matrix

解决方案


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


推荐阅读