Одноэлементный массив 1 нельзя считать допустимой коллекцией

#python #tensorflow #keras #deep-learning

Вопрос:

Я пытаюсь представить матрицу путаницы после модели глубокого обучения, но есть ошибка, как я могу ее исправить?

 Y_pred = model.predict(X_val) Y_pred_classes = np.argmax(Y_pred,axis = 1)  Y_true = np.argmax(y_val,axis = 0)  confusion_mtx = confusion_matrix(Y_true, Y_pred_classes)  f,ax = plt.subplots(figsize=(8, 8)) sns.heatmap(confusion_mtx, annot=True, linewidths=0.01,cmap="Greens",linecolor="gray", fmt= '.1f',ax=ax) plt.xlabel("Predicted Label") plt.ylabel("True Label") plt.title("Confusion Matrix") plt.show()  
 TypeError: Singleton array 1 cannot be considered a valid collection.  

Это результат Y_true и Y_pred_classes

 Y_true  
 1  
 Y_pred_classes  
 array([0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0])  

Ответ №1:

Вам нужно удалить этот код #Y_true = np.argmax(y_val,axis = 0) , так как Y_true он уже содержит фактические значения меток, вам не нужно находить максимально возможное число. Вы можете напрямую использовать Y_true в confusion_matrix() .

Пожалуйста, найдите ниже реплицированные и исправленные фрагменты кода:

 Y_pred = model.predict(X_val) Y_pred_classes = np.argmax(Y_pred,axis = 1)   #Y_true = np.argmax(y_val,axis = 0)   confusion_mtx = confusion_matrix(Y_true, Y_pred_classes)  f,ax = plt.subplots(figsize=(8, 8)) sns.heatmap(confusion_mtx, annot=True, linewidths=0.01,cmap="Greens",linecolor="gray", fmt= '.1f',ax=ax) plt.xlabel("Predicted Label") plt.ylabel("True Label") plt.title("Confusion Matrix") plt.show()