Цвета матрицы путаницы соответствуют размеру данных, а не точности классификации - PullRequest
1 голос
/ 07 апреля 2020

Я использую ConfusionMatrixDisplay из библиотеки sklearn, чтобы построить матрицу путаницы в двух моих списках, и хотя все результаты верны, меня беспокоит деталь. Кажется, что плотность цвета в матрице путаницы соответствует количеству экземпляров, а не точности классификации.

Это код, который я использую для построения матрицы путаницы:

target_names = ['Empty', 'Human', 'Dog', 'Dog&Human']
labels_names = [0,1,2,3] 
print(classification_report(y_true, y_pred,labels=labels_names, target_names=target_names))    
cm = confusion_matrix(y_true, y_pred,labels=labels_names)
disp = ConfusionMatrixDisplay(confusion_matrix=cm,display_labels=target_names)
disp = disp.plot(cmap=plt.cm.Blues,values_format='g')
plt.show()

Теперь результаты, полученные из отчета и матрицы путаницы:

enter image description here

Как видите, классы "Собака" и "Собака и человек" достигли точности 1, но цвет класса "Собака" - единственный с плотным синий. Даже класс «Пустой», в котором есть несколько неправильно классифицированных экземпляров, имеет более темный цвет, что делает классификацию лучше. Это, очевидно, связано с количеством данных в каждом классе, но разве цвет не должен зависеть от эффективности классификации, а не от количества правильно обнаруженных экземпляров?

Я попытался нормализовать матрицу путаницы, и это решило проблему, но тогда я предпочел бы иметь матрицу, которая показывает фактическое число, а не процент. Есть ли решение для этого? Большое спасибо.

1 Ответ

1 голос
/ 07 апреля 2020
Функция

confusion_matrix позволяет нормализовать матрицу по строкам или столбцам, что помогает справиться с проблемой дисбаланса классов, с которой вы сталкиваетесь. Вместо:

confusion_matrix(y_true, y_pred,labels=labels_names)

Просто передайте:

confusion_matrix(y_true, y_pred,labels=labels_names,normalize='true')

... для нормализации по строкам, что, я думаю, то, что вы хотите. normalize='pred' позволит вам нормализовать по столбцам. Проверьте здесь для получения более подробной информации.

...