2

我非常感谢您对此的帮助。我正在使用 jupyter 笔记本。

我有一个数据框,我想在其中计算评估者间的可靠性。我想通过 ID 列的值对它们进行成对比较(所有 ID 的频率为 2,每个编码器一个)。所有 ID 值都代表不同的文章,所以我不想将它们一起比较,但更多的是取每对的平均可靠性(也可能是每一列)。

N.  ID.     A.  B.      
0   8818313 Yes Yes     1.0 1.0 1.0 1.0 1.0 1.0
1   8818313 Yes No      0.0 1.0 0.0 0.0 1.0 1.0 
2   8820105 No  Yes     0.0 1.0 1.0 1.0 1.0 1.0 
3   8820106 No  No      0.0 0.0 0.0 1.0 0.0 0.0 

我已经能够找到一些关于 cohen's k 的说明,但没有找到如何在 ID 列中按值成对执行此操作的说明。

有谁知道该怎么做?

4

1 回答 1

2

这是我将如何处理它:

from io import StringIO
from sklearn.metrics import cohen_kappa_score

df = pd.read_csv(StringIO("""
N,ID,A,B,Nums
0,   8818313, Yes, Yes,1.0 1.0 1.0 1.0 1.0 1.0
1,   8818313, Yes, No,0.0 1.0 0.0 0.0 1.0 1.0 
2,   8820105, No,  Yes,0.0 1.0 1.0 1.0 1.0 1.0 
3,   8820105, No,  No,0.0 0.0 0.0 1.0 0.0 0.0 """))


def kappa(df):
    nums1 = [float(num) for num in df.Nums.iloc[0].split(' ') if num]
    nums2 = [float(num) for num in df.Nums.iloc[1].split(' ') if num]
    return cohen_kappa_score(nums1, nums2)

df.groupby('ID').apply(kappa)

这将产生:

ID
8818313    0.000000
8820105    0.076923
dtype: float64
于 2021-07-13T09:13:05.267 回答