Я использую 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()
Теперь результаты, полученные из отчета и матрицы путаницы:
Как видите, классы "Собака" и "Собака и человек" достигли точности 1, но цвет класса "Собака" - единственный с плотным синий. Даже класс «Пустой», в котором есть несколько неправильно классифицированных экземпляров, имеет более темный цвет, что делает классификацию лучше. Это, очевидно, связано с количеством данных в каждом классе, но разве цвет не должен зависеть от эффективности классификации, а не от количества правильно обнаруженных экземпляров?
Я попытался нормализовать матрицу путаницы, и это решило проблему, но тогда я предпочел бы иметь матрицу, которая показывает фактическое число, а не процент. Есть ли решение для этого? Большое спасибо.