Scikit Learn 中的 Cohen Kappa 分数

8

根据scikit learn文档,cohen kappa得分可以按照以下方式计算:

from sklearn.metrics import cohen_kappa_score
y_true = [1, 0, 1, 1, 1, 1]
y_pred = [1, 0, 1, 1, 1, 1]
print(cohen_kappa_score(y_true, y_pred)
1

这里的0和1是由注释者分配的标签。

然而,如果两个注释者都没有分配第二个标签(比如0),那么分数会变成nan!但其实这种情况下应该是1(如果我没记错的话),因为两个注释者是一致的。

from sklearn.metrics import cohen_kappa_score
y_true = [1, 1, 1, 1, 1, 1]
y_pred = [1, 1, 1, 1, 1, 1]
print(cohen_kappa_score(y_true, y_pred)

packages/sklearn/metrics/_classification.py:604: RuntimeWarning: invalid value encountered in true_divide
  k = np.sum(w_mat * confusion) / np.sum(w_mat * expected)
nan

我错过了什么吗?

更新: 我在Github的问题中找到了这个链接: https://github.com/scikit-learn/scikit-learn/issues/9624

我仍然不明白这是一个完全随机的完美协议,应该将其视为正确的注释。

1个回答

2

Cohen's Kappa考虑的是无机会的一致性;当两个注释者的标签都标记为同一个类时,其随机一致性为1,这会导致除以零的情况。 如果我们考虑以下简单的例子:

from metrics import cohen_kappa_score
cohen_kappa_score([0,0],[0,0])

这里的混淆矩阵等于:

conf = [2]

这意味着对于类别0,注释者1和注释者2之间存在两种一致的情况。请保留HTML标签。
p{o} = 2/2=1
p{e} = p{0} = 2/2 = 1
K=p{o}-p{e}/1-p{e} = 1-1/ 1-1 = nan

在我们的最终Kappa值的最后一个方程中,存在除以零的情况。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接