我是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()
答案 0 :(得分:0)
要获取正在使用test_generator.classes
的标签值。它提供了用于测试的所有标签。有关更多信息,请查看此code。它显示了使用keras数据flow_from_directory
进行混淆矩阵评估的示例。现在,您可以使用y_pred_keras
中的y_pred_true
和test_generator.classes
来创建ROC曲线。