Keras 如何计算准确率、精确度、召回率和 AUC?我通过使用keras.losses.CategoricalCrossentropy()损失函数创建了一个分类分类(即多个类)模型,并且在该model.compile()方法中我指定了以下指标:
METRICS = [
keras.metrics.CategoricalAccuracy(name='acc'),
keras.metrics.Precision(name='precision'),
keras.metrics.Recall(name='recall'),
keras.metrics.AUC(name='auc'),
]
当我评估模型时model.evaluate(X_test, y_test, verbose=2),结果如下:
147/147 - 1s - 损失:0.5127 - acc:0.8073 - 精度:0.8437 - 召回:0.7696 - auc:0.9537
然后,我想将其性能与使用其他算法(例如,DecisionTreeClassifier()在 scikit-learn 中实现)获得的结果进行比较。
为了评估其他分类器,我使用以下内容:
from sklearn.metrics import balanced_accuracy_score
from sklearn.metrics import roc_auc_score
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
print("AUC: %2.3f" % roc_auc_score(y_test, pred_bin))
print("ACC: %2.3f" % balanced_accuracy_score(lb.inverse_transform(y_test), pred))
print("PRE: %2.3f" % precision_score(lb.inverse_transform(y_test), pred, average='weighted'))
print("REC: %2.3f" % recall_score(lb.inverse_transform(y_test), pred, average='weighted'))
然而,当我用这段代码测试我的神经网络的性能时,我得到了以下结果:
ACC:0.715 PRE:0.801 REC:0.807 AUC:0.920
model.evaluate()如您所见,结果与使用Keras获得的结果不同。我怎样才能公平地比较不同的方法?