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

时间:2019-04-25 12:39:06

标签: python keras scikit-learn roc

我是Keras和我的新手,我在测试数据集中使用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()

1 个答案:

答案 0 :(得分:0)

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