代码,这样算才是正确的,原先踩了其他的坑!
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)