Как мне интерпретировать аргумент меток в функции sklearn confusion_matrix? - PullRequest
0 голосов
/ 10 января 2019

Допустим, у меня есть следующие два набора категорий и переменная, содержащая целевые имена:

spam = ["blue", "white", "blue", "yellow", "red"]
flagged = ["blue", "white", "yellow", "blue", "red"]
target_names = ["blue", "white", "yellow", "red"]

Когда я использую функцию confusion_matrix следующим образом, это результат:

from sklearn.metrics import confusion_matrix
confusion_matrix(spam, flagged, labels=target_names)

[[1 0 1 0]
 [0 1 0 0]
 [1 0 0 0]
 [0 0 0 1]]

Однако, когда я даю параметру labels информацию о том, что мне нужны только метрики синего цвета, я получаю следующий результат:

confusion_matrix(spam, flagged, labels=["blue"])

array([[1]])

Имея только одно число, я не могу вычислить точность, точность, отзыв и т. Д. Что я здесь не так делаю? заполнение желтого, белого или синего цвета приведет к 0, 1 и 1.

1 Ответ

0 голосов
/ 10 января 2019

Однако, когда я даю параметру labels информацию о том, что мне нужны только метрики из «синего» * ​​1003 *

Так не работает.

В мультиклассовых настройках, таких как ваша, точность и отзыв вычисляются для класса из всей матрицы путаницы.

Я подробно объяснил обоснование и расчеты в другой ответ ; вот как это применимо к вашему делу для вашей собственной матрицы путаницы cm:

import numpy as np

# your comfusion matrix:
cm =np.array([[1, 0, 1, 0],
              [0, 1, 0, 0],
              [1, 0, 0, 0],
              [0, 0, 0, 1]])

# true positives:
TP = np.diag(cm)
TP
# array([1, 1, 0, 1])

# false positives:
FP = np.sum(cm, axis=0) - TP
FP 
# array([1, 0, 1, 0])

# false negatives
FN = np.sum(cm, axis=1) - TP
FN
# array([1, 0, 1, 0])

Теперь из определения точности и отзыва мы имеем:

precision = TP/(TP+FP)
recall = TP/(TP+FN)

, которые, для вашего примера, дают:

precision
# array([ 0.5,  1. ,  0. ,  1. ])

recall
# array([ 0.5,  1. ,  0. ,  1. ])

т.е. для вашего «синего» класса вы получаете 50% точности и отзыв.

Тот факт, что точность и отзыв здесь оказываются идентичными, является чисто случайным, потому что массивы FP и FN оказываются идентичными; попробуй с разными предсказаниями почувствовать ...

...