AttributeError:'NumpyArrayIterator'对象没有属性'classes'

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

我收到此错误:

AttributeError:'NumpyArrayIterator'对象没有属性'classes'

我正在尝试创建一个混淆矩阵来评估我训练过的神经网络。在fit_generator函数进行训练之前,我正在使用ImageDatagenerator和datagen.flow函数。

对于预测,我在测试集上使用predict_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)))

我应该看到一个混乱矩阵,但是我看到一个错误。在运行实际数据集之前,我对示例数据运行了相同的代码,但确实向我展示了结果。

python keras scikit-learn confusion-matrix
1个回答
0
投票

首先,您需要从生成器中提取标签,然后将其放入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)))
© www.soinside.com 2019 - 2024. All rights reserved.