我写了一个用于混淆矩阵分析的 Python 库,你可以将它用于你的目的。
>>> 从 pycm 导入 *
>>> y_actu = [2, 0, 2, 2, 0, 1, 1, 2, 2, 0, 1, 2] # 或者 y_actu = numpy.array([2, 0, 2, 2, 0, 1 , 1, 2, 2, 0, 1, 2])
>>> y_pred = [0, 0, 2, 1, 0, 2, 1, 0, 2, 0, 2, 2] # 或者 y_pred = numpy.array([0, 0, 2, 1, 0, 2 , 1, 0, 2, 0, 2, 2])
>>> cm = ConfusionMatrix(actual_vector=y_actu, predict_vector=y_pred) # 从数据创建 CM
>>> cm.classes
[0, 1, 2]
>>> cm.table
{0:{0:3、1:0、2:0}、1:{0:0、1:1、2:2}、2:{0:2、1:1、2:3}}
>>> 打印(厘米)
预测 0 1 2
实际的
0 3 0 0
1 0 1 2
2 2 1 3
总体统计:
95% 置信区间 (0.30439,0.86228)
贝内特_S 0.375
卡方 6.6
卡方 DF 4
条件熵 0.95915
Cramer_V 0.5244
交叉熵 1.59352
Gwet_AC1 0.38931
联合熵 2.45915
KL 背离 0.09352
卡伯 0.35484
Kappa 95% CI (-0.07708,0.78675)
Kappa 无流行 0.16667
Kappa 标准误差 0.22036
Kappa 无偏 0.34426
拉姆达 A 0.16667
拉姆达 B 0.42857
互信息 0.52421
总体_ACC 0.58333
总体_RACC 0.35417
总体_RACCU 0.36458
PPV_宏 0.56667
PPV_Micro 0.58333
Phi 平方 0.55
参考熵 1.5
响应熵 1.48336
斯科特_PI 0.34426
标准错误 0.14232
Strength_Of_Agreement(奥特曼)公平
Strength_Of_Agreement(Cicchetti) 差
Strength_Of_Agreement(Fleiss) 差
Strength_Of_Agreement(Landis and Koch) Fair
TPR_Macro 0.61111
TPR_Micro 0.58333
班级统计:
课程 0 1 2
ACC(精度) 0.83333 0.75 0.58333
BM(知情或博彩公司知情) 0.77778 0.22222 0.16667
DOR(诊断优势比) 无 4.0 2.0
ERR(错误率) 0.16667 0.25 0.41667
F0.5(F0.5分数) 0.65217 0.45455 0.57692
F1(F1 分数 - 精度和灵敏度的调和平均值) 0.75 0.4 0.54545
F2(F2 分数) 0.88235 0.35714 0.51724
FDR(错误发现率) 0.4 0.5 0.4
FN(假阴性/未命中/类型 2 错误)0 2 3
FNR(未命中率或假阴性率) 0.0 0.66667 0.5
FOR(误漏率) 0.0 0.2 0.42857
FP(误报/类型 1 错误/误报) 2 1 2
FPR(脱落率或误报率) 0.22222 0.11111 0.33333
G(G-测量精度和灵敏度的几何平均值) 0.7746 0.40825 0.54772
LR+(阳性似然比) 4.5 3.0 1.5
LR-(负似然比) 0.0 0.75 0.75
MCC(马修斯相关系数) 0.68313 0.2582 0.16903
MK(标记) 0.6 0.3 0.17143
N(条件否定) 9 9 6
NPV(负预测值) 1.0 0.8 0.57143
P(条件正) 3 3 6
POP(人口) 12 12 12
PPV(精确或阳性预测值) 0.6 0.5 0.6
PRE(患病率) 0.25 0.25 0.5
RACC(随机精度) 0.10417 0.04167 0.20833
RACCU(无偏随机精度)0.11111 0.0434 0.21007
TN(真阴性/正确拒绝) 7 8 4
TNR(特异性或真阴性率) 0.77778 0.88889 0.66667
TON(测试结果阴性) 7 10 7
TOP(检测结果阳性) 5 2 5
TP(真阳性/命中) 3 1 3
TPR(敏感度、召回率、命中率或真阳性率) 1.0 0.33333 0.5
>>> cm.matrix()
预测 0 1 2
实际的
0 3 0 0
1 0 1 2
2 2 1 3
>>> cm.normalized_matrix()
预测 0 1 2
实际的
0 1.0 0.0 0.0
1 0.0 0.33333 0.66667
2 0.33333 0.16667 0.5
链接:PyCM