You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何重组DataFrame以运行Krippendorff's alpha?求可行解决方案

重组DataFrame并计算Krippendorff's Alpha的可行思路

我来帮你梳理下具体的实现步骤,分两种常见的原始数据结构来拆解:

一、先明确原始数据结构,再针对性重组

情况1:原始数据是「宽格式」(每条观测一行,已包含两位标注者的分数)

如果你的DataFrame已经是类似这样的结构:

ParticipantIDObsNumTranscriber1_ScoreTranscriber2_Score
P1123
P1200
............

那重组就很简单,只需要重命名列并提取目标字段:

import pandas as pd

# 重命名列并筛选需要的三列
df_reshaped = df.rename(
    columns={
        "ObsNum": "Code",
        "Transcriber1_Score": "Transcriber1",
        "Transcriber2_Score": "Transcriber2"
    }
)[["Code", "Transcriber1", "Transcriber2"]]

# 如果不同参与者的ObsNum重复,可以把ParticipantID和ObsNum合并成唯一Code
df_reshaped["Code"] = df["ParticipantID"].astype(str) + "_" + df["ObsNum"].astype(str)

情况2:原始数据是「长格式」(每个标注者的评估单独占一行)

如果你的DataFrame是类似这样的结构:

ParticipantIDObsNumTranscriberErrorScore
P11T12
P11T23
P12T10
P12T20
............

这时候需要用pivot方法把长格式转成宽格式:

# 重塑成目标结构
df_reshaped = df.pivot(
    index=["ParticipantID", "ObsNum"],  # 按参与者+观测序号分组
    columns="Transcriber",  # 把标注者转成列
    values="ErrorScore"  # 提取分数值
).reset_index()

# 重命名列并筛选目标字段
df_reshaped = df_reshaped.rename(
    columns={
        "ObsNum": "Code",
        "T1": "Transcriber1",
        "T2": "Transcriber2"
    }
)[["Code", "Transcriber1", "Transcriber2"]]

# 同样,若需要唯一Code,合并参与者ID和观测序号
df_reshaped["Code"] = df_reshaped["ParticipantID"].astype(str) + "_" + df_reshaped["Code"].astype(str)

二、计算Krippendorff's Alpha的工具

推荐用专门的krippendorff库来计算,步骤如下:

  1. 先安装库:
pip install krippendorff
  1. 把重组后的DataFrame转换成算法需要的格式(二维数组,行是观测,列是标注者),然后计算:
import krippendorff
import numpy as np

# 提取两位标注者的分数数组,自动跳过缺失值(如果有的话)
ratings = df_reshaped[["Transcriber1", "Transcriber2"]].values

# 根据你的错误分数类型选择尺度:
# - 名义尺度(分类标签):"nominal"
# - 有序尺度(等级评分):"ordinal"
# - 间隔尺度(连续/整数分数):"interval"
alpha = krippendorff.alpha(ratings=ratings, level_of_measurement="interval")

print(f"Krippendorff's Alpha值: {alpha:.4f}")

关键注意点

  • 处理缺失值:如果有部分观测缺少某一位标注者的分数,建议提前清理(删除缺失行,或用合理值填充),否则会影响计算结果。
  • Code的唯一性:确保Code列能唯一标识每条观测,避免不同参与者的观测序号重复导致混淆。

内容的提问来源于stack exchange,提问作者Audrey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:06:51