从真实值和预测值中获取准确性



我有predicted_yreal_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)

您可以全部获得分类报告,包括precisionrecallf1-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))

最新更新