Вопрос или проблема
Я использую Google Colab для решения задачи мульти-классификации. Я пытаюсь построить матрицу ошибок для этой задачи, я пробовал сделать это, используя:
from sklearn.metrics import multilabel_confusion_matrix, ConfusionMatrixDisplay
import matplotlib.pyplot as plt
confusion_matrix=multilabel_confusion_matrix(test_labels, y_pred)
disp=ConfusionMatrixDisplay(confusion_matrix,display_labels=test_labels)
disp.plot(include_values=True, cmap="viridis", ax=None, xticks_rotation="vertical")
plt.show()
Однако я получаю следующую ошибку:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-25-3fe075d4503c> in <module>()
5 confusion_matrix=multilabel_confusion_matrix(test_labels, y_pred)
6 disp=ConfusionMatrixDisplay(confusion_matrix,display_labels=test_labels)
----> 7 disp.plot(include_values=True, cmap="viridis", ax=None, xticks_rotation="vertical")
8 plt.show()
5 frames
/usr/local/lib/python3.7/dist-packages/matplotlib/image.py in set_data(self, A)
697 or self._A.ndim == 3 and self._A.shape[-1] in [3, 4]):
698 raise TypeError("Invalid shape {} for image data"
--> 699 .format(self._A.shape))
700
701 if self._A.ndim == 3:
TypeError: Invalid shape (8, 2, 2) for image data
Результатом multilabel_confusion_matrix
являются несколько матриц. ConfusionMatrixDisplay
отображает только одну матрицу. Один из вариантов — пройтись в цикле по матрицам, чтобы построить каждую отдельно. Что-то вроде этого:
from sklearn.metrics import multilabel_confusion_matrix, ConfusionMatrixDisplay
import matplotlib.pyplot as plt
test_labels = [0, 1, 2, 1, 0]
y_pred = [0, 1, 2, 1, 1]
confusion_matrices = multilabel_confusion_matrix(test_labels, y_pred)
for confusion_matrix in confusion_matrices:
disp = ConfusionMatrixDisplay(confusion_matrix, display_labels=test_labels)
disp.plot(include_values=True, cmap="viridis", ax=None, xticks_rotation="vertical")
plt.show()
Ответ или решение
Для решения задачи построения матрицы ошибок для задачи многоклассовой классификации в Google Colab, вы столкнулись с проблемой, вызванной неоднозначностью между многоматричной и единственной матрицей, которую можно отобразить с помощью ConfusionMatrixDisplay
. Рассмотрим шаги, которые помогут вам правильно визуализировать матрицу ошибок для многоклассовой классификации.
Обзор проблемы
При работе с задачей многоклассовой классификации, метрика multilabel_confusion_matrix
возвращает множество матриц ошибок (по одной для каждого класса) в отличие от одной матрицы для двухклассовой задачи. Попытка отобразить их все одновременно с помощью ConfusionMatrixDisplay
вызывает ошибку, так как этот инструмент предназначен для отображения только одной матрицы.
Решение проблемы
Шаги для правильного построения матрицы ошибок
-
Импорт необходимых библиотек:
Убедитесь, что вы импортировалиmultilabel_confusion_matrix
иConfusionMatrixDisplay
изsklearn.metrics
, а такжеmatplotlib.pyplot
для визуализации. -
Расчет матриц ошибок:
Используйтеmultilabel_confusion_matrix(test_labels, y_pred)
для расчета матриц ошибок, гдеtest_labels
иy_pred
— это истинные и предсказанные метки соответственно. -
Отображение каждой матрицы отдельно:
Используйте циклfor
для перебора каждой индивидуальной матрицы ошибок и отображения ее с помощьюConfusionMatrixDisplay
.
from sklearn.metrics import multilabel_confusion_matrix, ConfusionMatrixDisplay
import matplotlib.pyplot as plt
# Пример данных
test_labels = [0, 1, 2, 1, 0]
y_pred = [0, 1, 2, 1, 1]
# Расчет матриц ошибок
confusion_matrices = multilabel_confusion_matrix(test_labels, y_pred)
# Отображение каждой матрицы
for confusion_matrix in confusion_matrices:
disp = ConfusionMatrixDisplay(confusion_matrix)
disp.plot(include_values=True, cmap="viridis", ax=None, xticks_rotation="vertical")
plt.show()
Рекомендации и дополнительные шаги
-
Подписи и метки: Для улучшения читаемости графиков добавьте ясные подписи к осям и заголовки для каждой матрицы ошибок с указанием класса, к которому она относится.
-
Настройка параметров диалога: Если у вас много классов, настройте параметры отображения, такие как размер фигуры (
figsize
), чтобы все матрицы влезли в экран и были хорошо видны. -
Разбирайтесь в данных: Глубже анализируйте каждую матрицу ошибок, чтобы понять, на каких классах алгоритм совершает наибольшее количество ошибок и почему.
Этот метод позволит вам эффективно визуализировать качества модели и принимать обоснованные решения для последующей оптимизации. Успех в анализе данных зависит от тщательного внимания к таким деталям и систематичной проверки каждого этапа вашего машинного обучения.