从 Keras model.predict_generator 计算准确率

Posted

技术标签:

【中文标题】从 Keras model.predict_generator 计算准确率【英文标题】:Calculate accuracy from Keras model.predict_generator 【发布时间】:2019-08-06 10:27:48 【问题描述】:

我有 Keras 模型,我想使用我的测试数据对其进行评估。 当我使用 keras model.evaluate_generator 时,我会丢失并返回 acc,我可以打印百分比准确度,例如:

loss, acc = model.evaluate_generator(test_gen, steps=evaluation_steps)
print("\n%s: %.2f%%" % (model.metrics_names[1], acc * 100))

这会导致大约 92%。 因为我想创建一个混淆矩阵(也看看我有多少误报和漏报),所以我将代码更改为:

predictions = model.predict_generator(test_gen, steps=evaluation_steps)
y_pred = np.argmax(predictions, axis=1)
y_true = np.argmax(labels, axis=1)
confusion_matrix(y_true, y_pred)

我得到了正确的混淆矩阵。但是,我仍然希望显示 92%,我可以从 predictions 获得它吗?

【问题讨论】:

【参考方案1】:

准确度可以通过您的y_predy_true 直接计算出来;这是一个用于 3 类分类的虚拟数据示例:

import numpy as np

y_true = np.array([2, 0, 2, 2, 0, 1])
y_pred = np.array([0, 0, 2, 2, 1, 2])

这里简单的视觉检查告诉我们,我们的准确率应该是 0.5 (50%);所以:

l = len(y_true)
acc = sum([y_pred[i]==y_true[i] for i in range(l)])/l
acc
# 0.5

【讨论】:

以上是关于从 Keras model.predict_generator 计算准确率的主要内容,如果未能解决你的问题,请参考以下文章

从 Keras 模型中获取混淆矩阵

ImportError:无法从“keras.models”导入名称“Sequential”

Keras入门必读教程:手把手从安装到解决实际问题

从 Keras 的 imdb 数据集中恢复原始文本

从 keras 生成器获取真实标签

从 Keras 功能模型中获取类标签