Получить матрицу неточностей из мультиклассовой модели Кераса

Я строю мультиклассовую модель с Керасом.

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, batch_size=batch_size, epochs=epochs, verbose=1, callbacks=[checkpoint], validation_data=(X_test, y_test))  # starts training

Вот как выглядят мои тестовые данные (это текстовые данные).

X_test
Out[25]: 
array([[621, 139, 549, ...,   0,   0,   0],
       [621, 139, 543, ...,   0,   0,   0]])

y_test
Out[26]: 
array([[0, 0, 1],
       [0, 1, 0]])

После создания прогнозов ...

predictions = model.predict(X_test)
predictions
Out[27]: 
array([[ 0.29071924,  0.2483743 ,  0.46090645],
       [ 0.29566404,  0.45295066,  0.25138539]], dtype=float32)

Я сделал следующее, чтобы получить матрицу путаницы.

y_pred = (predictions > 0.5)

confusion_matrix(y_test, y_pred)
Traceback (most recent call last):

  File "<ipython-input-38-430e012b2078>", line 1, in <module>
    confusion_matrix(y_test, y_pred)

  File "/Users/abrahammathew/anaconda3/lib/python3.6/site-packages/sklearn/metrics/classification.py", line 252, in confusion_matrix
    raise ValueError("%s is not supported" % y_type)

ValueError: multilabel-indicator is not supported

Однако я получаю указанную выше ошибку.

Как я могу получить матрицу путаницы при создании мультиклассовой нейронной сети в Keras?


person ATMA    schedule 19.06.2018    source источник


Ответы (1)


Ваш ввод в confusion_matrix должен быть массивом int, а не одним горячим кодированием.

matrix = metrics.confusion_matrix(y_test.argmax(axis=1), y_pred.argmax(axis=1))
person Neabfi    schedule 19.06.2018
comment
В случае, если он слишком тонкий, этот ответ поясняет, что вопрос был задан о sklearn.metrics.confusion_matrix(), а не о tensorflow.math.confusion_matrix(), чего можно было ожидать с учетом тега keras - person Jake Stevens-Haas; 30.01.2020
comment
Как я могу использовать его для набора данных изображения? - person Nur Bijoy; 15.03.2021
comment
@ JakeStevens-Haas Спасибо: на самом деле это материальный изъян в ответе: этот ответ следует переписать - person WestCoastProjects; 26.06.2021