代码,这样算才是正确的,原先踩了其他的坑!
import numpy as np
# 计算混淆矩阵的kappa
def kappa(confusion_matrix):
pe_rows = np.sum(confusion_matrix, axis=0)
pe_cols = np.sum(confusion_matrix, axis=1)
sum_total = sum(pe_cols)
pe = np.dot(pe_rows, pe_cols) / float(sum_total ** 2)
po = np.trace(confusion_matrix) / float(sum_total)
return (po - pe) / (1 - pe)
# 定义一个列表
list_ = [[50., 0., 0., 0., 0., 0., 0., 0.],
[0., 50., 0., 0., 0., 0., 0., 0.],
[0., 0., 50., 0., 0., 0., 0., 0.],
[0., 0., 0., 50., 0., 0., 0., 0.],
[0., 0., 0., 0., 50., 0., 0., 0.],
[0., 0., 0., 0., 0., 50., 0., 0.],
[0., 0., 0., 0., 0., 0., 50., 0.],
[0., 0., 0., 0., 0., 0., 0., 50.]]
# 将列表转为numpy,当作混淆矩阵
Confusion_Matrix = np.array(list_)
# 计算kappa值
K = kappa(Confusion_Matrix)
print("Kappa值为", K)