如何使用 Micro F-Measure 评估 Keras multi-class 模型?

How to evaluate a Keras multi-class model with Micro F-Measure?

我想用微 F 测量评估 Tensorflow2/Keras 中的多 class 模型。

如何实现?

给定一个模型

model = tf.keras.models.load_model('NNMODEL.h5')

测试数据集

testX 
testY 

最简单的方法是使用scikit-learn

在官方文档中,可以看到下面的例子(稍作修改):

from sklearn.metrics import f1_score
y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 2, 1, 0, 0, 1]
result = f1_score(y_true, y_pred, average = None) (an array of f1-scores for each class)
result_micro = f1_score(y_true, y_pred, average='micro') (a float value)

您需要注意将您的'average'参数设置为None;通过这种方式,您可以分别收到每个 class 的 F1 分数。如果您确实想要一个没有每个 class 的 F1 分数的整体 F1 分数,请使用 average = 'micro'

因此,对 testX 中的每个元素进行预测,将 class 预测附加到列表中(这构造了上面示例中的 y_pred),然后 y_true 实际上是基本事实,即 testY 在你的情况下。