python - 多类多标签混淆矩阵,其中预测和标签是多热向量
问题描述
我需要计算表示为多热向量的标签和预测的混淆矩阵。似乎 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
?
另一个问题似乎给出了三个混淆矩阵,而我正在寻找的不是这种情况。
解决方案
我认为准确性不是在这种情况下使用的正确指标。你宁愿roc_auc_score
从sklearn.metrics.ranking
.
推荐阅读
- java - 如何在 Grails 中实现 LDAP 身份验证和数据库角色映射
- postgresql - 如何禁用 AWS RDS 加密?
- r - 具有两个变量的线性混合模型的事后检验
- android - 当通过触摸水平滚动子项然后垂直滚动启动垂直滚动时,onNestedScroll 不给出 dy
- javascript - 用 TypeScript 反应 children[] 问题
- scala - 如何将列与apache spark中同一数据框中的列进行比较
- c# - 从多个表中删除记录时出错
- javascript - WebAssembly emsdk 安装失败
- java - 视图寻呼机中的片段在第一次后不加载数据
- php-5.6 - PHP 7.3 上的 Cakephp 2.4