Как вставить имена классов в матрицу путаницы? - PullRequest
0 голосов
/ 05 августа 2020

У меня следующая матрица путаницы:

print (confusion_matrix(y_test, y_pred))

[[316 183  92  95  93  52]
[191 391  21  24  83  47]
[ 91  23 510 112  15   5]
[163  47 349 184  42  17]
[241 248  53  70  99  41]
[297 228  56  53 116 113]]

, и я хочу напечатать имена классов. Поэтому я пишу следующий код:

confusion_matrix(y_test, y_pred, labels=['downstairs', 'jogging', 'sitting', 'standing', 'upstairs', 
'walking'])

и получаю сообщение об ошибке:

ValueError: At least one label specified must be in y_true

Есть идеи, как это исправить?

1 Ответ

0 голосов
/ 05 августа 2020

labels параметр confusion_matrix - это список меток для индексации матрицы. Поэтому, если у вас есть y, например, ['a','b','a'], вы можете использовать labels как ['a','b'] для индексации.

Более того, confusion_matrix возвращает массив numpy, поэтому там невозможно получить его напрямую из confusion_matrix.

Подробности см. в docs .

Однако вы можете сделать это, накрыв массив numpy в pandas фрейм данных

Пример кода

from sklearn.metrics import confusion_matrix
import pandas as pd

y_true = [2, 0, 2, 2, 0, 1]
y_pred = [0, 0, 2, 2, 0, 2]

print (pd.DataFrame(confusion_matrix(y_true, y_pred), columns=['a','b','c']))

вывод:

   a  b  c
0  2  0  0
1  0  0  1
2  1  0  2
...