Pandas (python) 中 DataFrame 中的 Pairwise Cohen 的 Kappa 行

问题描述

我非常感谢这方面的帮助。我正在使用 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 列中的值成对执行此操作。

有人知道怎么做吗?

解决方法

这是我将如何处理它:

from io import StringIO
from sklearn.metrics import cohen_kappa_score

df = pd.read_csv(StringIO("""
N,ID,A,B,Nums
0,8818313,Yes,1.0 1.0 1.0 1.0 1.0 1.0
1,No,0.0 1.0 0.0 0.0 1.0 1.0 
2,8820105,0.0 1.0 1.0 1.0 1.0 1.0 
3,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