您可以全部获得分类报告,包括
我有predicted_y
和real_y
。
有没有比以下更快的方法来获得准确性:
from keras import backend as K
accuracy_array = K.eval(keras.metrics.categorical_accuracy(real_y, predicted_y))
print(sum(accuracy_array)/len(accuracy_array))
正如我在评论中提到的,我建议将scikit-learn
用于您的目的。
示例 1:
from sklearn import metrics
results = metrics.accuracy_score(real_y, predicted_y)
您可以全部获得分类报告,包括precision
,recall
,f1-scores
。
示例 2:
from sklearn.metrics import classification_report
y_true = [0, 1, 2, 2, 2]
y_pred = [0, 0, 2, 2, 1]
target_names = ['class 0', 'class 1', 'class 2']
print(classification_report(y_true, y_pred, target_names=target_names))
precision recall f1-score support
class 0 0.50 1.00 0.67 1
class 1 0.00 0.00 0.00 1
class 2 1.00 0.67 0.80 3
avg / total 0.70 0.60 0.61 5
最后,对于混淆矩阵,请使用以下内容:
例3:
from sklearn.metrics import confusion_matrix
y_true = [0, 1, 2, 2, 2]
y_pred = [0, 0, 2, 2, 1]
confusion_matrix(y_true, y_pred)
array([[1, 0, 0],
[1, 0, 0],
[0, 1, 2]])
尝试从scikit-learn accuracy_score。
import numpy as np
from sklearn.metrics import accuracy_score
y_pred = [0, 2, 1, 3]
y_true = [0, 1, 2, 3]
accuracy_score(y_true, y_pred)
accuracy_score(y_true, y_pred, normalize=False)
我写了一个用于混淆矩阵分析的 Python 库,你可以用它来达到你的目的。
>>>从 PYCM 进口 *>>> y_actu = [2, 0, 2, 2, 0, 1, 1, 2, 2, 0, 1, 2] # 或 y_actu = numpy.array([2, 0, 2, 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, 2, 2])>>> cm = 混淆矩阵(actual_vector=y_actu, predict_vector=y_pred) # 从数据创建 CM>>> 厘米类 [0, 1, 2]>>>厘米表 {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) Bennett_S 0.375 卡方 6.6 卡方自由度 4 条件熵 0.95915 Cramer_V 0.5244交叉熵 1.59352 Gwet_AC1 0.38931 联合熵 2.45915 吉隆坡背离 0.09352 河童 0.35484 河童 95% 置信区间 (-0.07708,0.78675) 河童无患病率 0.16667 河童标准误差 0.22036 河童无偏 0.34426 λ A 0.16667 λB 0.42857 互信息 0.52421 Overall_ACC 0.58333Overall_RACC 0.35417 Overall_RACCU 0.36458 PPV_Macro 0.56667 PPV_Micro 0.58333 φ平方 0.55 参考熵 1.5 响应熵 1.48336 Scott_PI 0.34426 标准误差 0.14232 Strength_Of_Agreement(奥特曼)博览会 Strength_Of_Agreement(Cicchetti) Poor Strength_Of_Agreement(弗莱斯) 差 Strength_Of_Agreement(兰迪斯和科赫)博览会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 错误率 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 人口(人口) 12 12 12 PPV(精确或阳性预测值) 0.6 0.5 0.6 患病率 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 吨(测试结果阴性) 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
感谢 seralouk,我发现:
from sklearn import metrics
metrics.accuracy_score(real_y.argmax(axis=1), predicted_y.argmax(axis=1))