Python 属性错误:';numpyarray迭代器';对象没有属性';类别';

Python 属性错误:';numpyarray迭代器';对象没有属性';类别';,python,keras,scikit-learn,confusion-matrix,Python,Keras,Scikit Learn,Confusion Matrix,我得到这个错误: AttributeError:'NumpyArrayIterator'对象没有属性'classes' 我试图制作一个混淆矩阵来评估我训练的神经网络。我使用ImageDatagenerator和datagen.flow函数进行培训,然后使用fit_generator函数进行培训 对于预测,我在测试集上使用predict_生成器函数。到目前为止一切正常。问题出现在以下方面: test_generator.reset() pred = model.predict_generator(

我得到这个错误:

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

我试图制作一个混淆矩阵来评估我训练的神经网络。我使用ImageDatagenerator和datagen.flow函数进行培训,然后使用fit_generator函数进行培训

对于预测,我在测试集上使用predict_生成器函数。到目前为止一切正常。问题出现在以下方面:

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)))

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

首先需要从生成器中提取标签,然后将它们放入矩阵函数中
要提取标签,请使用
x\u gen,y\u gen=test\u 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)))

如果我理解的很好,你想混淆测试生成器类和预测(y\U pred)类的矩阵吗?是的。真值和预测值的混淆矩阵。这给了我以下错误:ValueError:找到了样本数不一致的输入变量:[328871]y_gen也应该是8871。