Как получить основную правду и соответствующие оценки при использовании ImageDataGenerator - PullRequest
0 голосов
/ 25 апреля 2019

Я новичок в Keras и я использую кривую roc с моим тестовым набором данных для оценки качества моей модели (модель была сделана с использованием функционального API и идентифицирована как "model" в моем фрагменте кода) .

Я планирую использовать кривую ROC (используя roc_curve из scikit-learn).

Пример:

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 голосов
/ 25 апреля 2019

Чтобы получить значения меток, которые вы используете test_generator.classes.Он дает все метки, которые используются для теста.Для получения дополнительной информации вы можете посмотреть этот код .В нем показан пример выполнения матрицы путаницы с данными keras flow_from_directory.Теперь вы можете использовать y_pred_keras и y_pred_true из test_generator.classes для создания кривой ROC.

...