Pandas (python) 中 DataFrame 中行的成对 Cohen Kappa

Pairwise Cohen's Kappa of rows in DataFrame in Pandas (python)

非常感谢您对此提供帮助。我正在使用 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 的 k 的一些说明,但没有找到如何按 ID 列中的值成对执行此操作的说明。

有人知道怎么做吗?

以下是我将如何处理它:

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