AttributeError: у объекта 'NumpyArrayIterator' нет атрибута 'classes' - PullRequest
0 голосов
/ 30 октября 2019

Я получаю эту ошибку:

AttributeError: у объекта 'NumpyArrayIterator' нет атрибута 'classes'

Я пытаюсь создать запутанную матрицу для оценки обученной нейронной сети. Я использую функции ImageDatagenerator и datagen.flow перед функцией fit_generator для обучения.

Для прогнозов я использую функцию предсказания_генератора в наборе тестов. Пока все работает нормально. Выпустите следующие ошибки:

test_generator.reset()
pred = model.predict_generator(test_generator, steps=len(test_generator), verbose=2)

from sklearn.metrics import classification_report, confusion_matrix, cohen_kappa_score

y_pred = np.argmax(pred, axis=1)

print('Confusion Matrix')
print(pd.DataFrame(confusion_matrix(test_generator.classes, y_pred)))

Я должен увидеть матрицу путаницы, но вместо этого я вижу ошибку. Я запустил тот же код с примерами данных, прежде чем работал с фактическим набором данных, и он показал мне результаты.

1 Ответ

0 голосов
/ 31 октября 2019

Сначала вам нужно извлечь метки из генератора, а затем поместить их в функцию confusion_matrix.
Для извлечения меток используйте x_gen,y_gen = test_generator.next(), просто обратите внимание, что метки имеют одну горячую кодировку.

Пример:

test_generator.reset()
pred = model.predict_generator(test_generator, steps=len(test_generator), verbose=2)

from sklearn.metrics import classification_report, confusion_matrix, cohen_kappa_score

y_pred = np.argmax(pred, axis=1)

x_gen,y_gen = test_generator.next()
y_gen = np.argmax(y_gen, axis=1)

print('Confusion Matrix')
print(pd.DataFrame(confusion_matrix(y_gen, y_pred)))
...