我想计算一个多标签图像分类问题的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一个小片段。在
根据定义,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用于确定评分者间可靠性的一种替代方法。在
参考链接:wikipedia,statisticshowto
虽然Krippendorff的Alpha在sklearn库中不可用,但是您可以使用这个包krippendorff
^{pr2}$(845,8),(845,8)
希望这有帮助
克里彭多夫α
你不能使用科恩的卡帕多标签协议。解决方法是使用Krippendorff的Alpha。在
然而,Krippendorff的Alpha可以用于许多不同的数据类型,您需要记住您有名义数据(即类)。在
代码
您可以使用这里的
krippendorff
包:https://github.com/pln-fing-udelar/fast-krippendorff注意,
alpha()
函数有一个参数level_of_measurement
,默认情况下是interval
,因此需要将其设置为nominal
!在相关问题 更多 >
编程相关推荐