如何使用 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
在你的情况下。
我想用微 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
在你的情况下。