如何在使用ImageDataGenerator时获得基本事实和相应的分数

问题描述 投票:0回答:1

我是Keras和I的新手,我使用roc曲线和我的测试数据集来评估模型的质量(模型是使用功能api完成的,在我的代码片段中被识别为“model”)。

我计划使用ROC曲线(使用scikit-learn中的roc_curve)。

示例:

fpr_keras, tpr_keras, thresholds_keras = roc_curve(y_true,y_scores)

为了做到这一点,正如文档所说,我需要真正的二进制标签(示例中为y_true)和目标分数(示例中为y_scores)。

但我不知道如何从测试ImageDataGenerator获取所有真正的二进制标签(test_generator(见下文)返回DirectoryIterator)。

而且我不知道如何使用model.predict_generator获得相应的目标分数(它返回一个批量大小的数组)

现在我的代码看起来像这样(总结):

from keras.preprocessing.image import ImageDataGenerator
from sklearn.metrics import roc_curve

height=150
width=150
batch_size=16

test_datagen = ImageDataGenerator(rescale=1./255)

test_generator = test_datagen.flow_from_directory(
        'data/test',
        target_size=(height, width),
        batch_size=batch_size,
        class_mode='binary')

y_pred_keras = model.predict_generator(test_generator,1).ravel()
python keras scikit-learn roc
1个回答
0
投票

获取使用test_generator.classes的标签值。它提供了用于测试的所有标签。有关更多信息,您可以查看此code。它显示了使用keras数据flow_from_directory进行混淆矩阵评估的示例。现在你可以使用y_pred_kerasy_pred_truetest_generator.classes来创建ROC曲线。

© www.soinside.com 2019 - 2024. All rights reserved.