多标签图像分类的kappa评分计算

2024-05-28 21:19:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想计算一个多标签图像分类问题的kappa分数。在

我不认为sklearn天生就支持这个,因为当我尝试这个的时候

import sklearn
sklearn.metrics.cohen_kappa_score(y_test, predictions) 

我明白了

^{pr2}$

有人有什么建议吗? 我的预测矩阵的形状是(845,8),其中有0和1。 我的基本真值矩阵是(845,8)的形状,其中有0和1

我的标签看起来像这样

[0,0,1,0,1,0,1,0]

提前谢谢。在

#######编辑

请提供相关代码:Alteast一个小片段。在


Tags: test图像import分类矩阵标签sklearn天生
2条回答

根据定义,Cohen's kappa不支持多个标签

这是因为Cohen的kappa由K=(po-pe)/(1-pe)给出

式中po=(TP+FN)/(TP+TN+FP+FN)

pe=(TN+FP)/(TP+TN+FP+FN)

如您所见,它是使用混淆计算的矩阵。你只能为互斥标签(例如:[0,0,1,0,0,0,0])构造混淆矩阵,而不能为非互斥标签(例如:[0,0,1,0,1,0])

如果使用Cohen的kappa是优先考虑的,我会建议分别计算每个标签的kappa值,然后取平均值。在

否则最好的办法就是使用克里彭多夫的阿尔法

krippendorf的α(也称为Krippendorff系数)是Cohen Kappa用于确定评分者间可靠性的一种替代方法。在

参考链接:wikipediastatisticshowto

虽然Krippendorff的Alpha在sklearn库中不可用,但是您可以使用这个包krippendorff

import krippendorff
reliability_data = [[prediction matrix],[ground truth]]
print(krippendorff.alpha(reliability_data=reliability_data))
^{pr2}$

(845,8),(845,8)

希望这有帮助

克里彭多夫α

你不能使用科恩的卡帕多标签协议。解决方法是使用Krippendorff的Alpha。在

然而,Krippendorff的Alpha可以用于许多不同的数据类型,您需要记住您有名义数据(即类)。在

代码

您可以使用这里的krippendorff包:https://github.com/pln-fing-udelar/fast-krippendorff

注意,alpha()函数有一个参数level_of_measurement,默认情况下是interval,因此需要将其设置为nominal!在

import krippendorff

reliability_data = [[predictions], [y_test]]

print(krippendorff.alpha(reliability_data=reliability_data, 
                         level_of_measurement='nominal'))

相关问题 更多 >

    热门问题