python怎么Fleiss Kappa
意图
查验数据共同性
示例
机器学习中触及新数据集发布的论文一般会描绘数据集的构建进程,一份数据集往往由多位标示员共同完成,不同标示员对数据的了解很简单存在误差,这极大程度上会影响数据集的共同性,然后约束算法的功能。因此在构建数据集的标示进程中,大多数构建数据集的作业都会对标示员之间的标示共同性进行评价,以确保数据集的质量。
假如有一个15个项目,7个评委,每行是一个项意图评委评分
代码
import numpy as np
from statsmodels.stats.inter_rater import fleiss_kappa
# 原始数据:一个15个项目,7个评委,每行是一个项意图评委评分
data = np.array([
[5,5,5,5,5,5,5],
[4,4,2,4,4,3,3],
[3,4,5,5,3,5,4],
[2,2,2,3,3,3,3],
[1,3,3,3,3,2,3],
[1,1,1,2,1,2,2],
[1,2,1,3,4,2,1],
[1,5,3,2,2,2,5],
[1,1,2,2,3,1,3],
[2,2,2,2,2,2,2],
[1,1,1,2,1,2,2],
[1,2,1,3,4,2,1],
[5,5,5,5,5,5,5],
[1,1,2,2,3,1,3],
[2,2,2,2,2,2,2]
])
# 获取评分类别规模(假定评分为整数,类别从最小值到最大值)
categories = np.arange(data.min(), data.max() + 1) # [2, 3, 4, 5]
num_categories = len(categories)
# 初始化 Fleiss' kappa 格局矩阵
ratings_matrix = np.zeros((data.shape[0], num_categories), dtype=int)
# 核算每个项目中每个类别的评分人数
for i, row in enumerate(data):
for category in categories:
ratings_matrix[i, category - categories.min()] = np.sum(row == category)
# 打印收拾后的矩阵
# print("收拾后的数据矩阵 (Fleiss' kappa 格局):")
# print(ratings_matrix)
# 核算 Fleiss' kappa
kappa = fleiss_kappa(ratings_matrix)
# 核算额定核算量
n = np.sum(ratings_matrix, axis=1)[0] # 每个项意图评分人数(假定共同)
N = ratings_matrix.shape[0] # 项目数
P = np.sum(ratings_matrix, axis=0) / (N * n) # 每个类别的整体份额
P_bar = np.sum(np.sum(ratings_matrix**2, axis=1) - n) / (N * n * (n - 1)) # 均匀项目共同性
P_e = np.sum(P**2) # 预期共同性
# 核算标准误差
se_kappa = np.sqrt((P_bar * (1 - P_bar) / (N * (1 - P_e)**2)))
# 核算 Z 值
z_kappa = kappa / se_kappa
# 核算 p-value
from scipy.stats import norm
p_value = 2 * (1 - norm.cdf(np.abs(z_kappa)))
# 核算 95% CI
ci_lower = kappa - 1.96 * se_kappa
ci_upper = kappa + 1.96 * se_kappa
# 打印成果
print("\nFleiss' kappa: {:.4f}".format(kappa))
print("Standard Error: {:.4f}".format(se_kappa))
print("Z-value: {:.4f}".format(z_kappa))
print("p-value: {:.4f}".format(p_value))
print("95% CI: ({:.4f}, {:.4f})".format(ci_lower, ci_upper))
目标解说
kappa核算成果为[-1,1],但一般kappa是落在 [0,1] 间
第一种剖析原则–可分为五组来表明不同等级的共同性:
0.0~0.20极低的共同性(slight)
0.21~0.40一般的共同性(fair)
0.41~0.60 中等的共同性(moderate)
0.61~0.80 高度的共同性(substantial)
0.81~1简直完全共同(almost perfect)