如何将 class 个名字插入混淆矩阵?

How to insert class names into the confusion matrix?

我有以下混淆矩阵:

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]]

我想打印 class 个名字。所以我写了下面的代码:

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

我收到错误:

ValueError: At least one label specified must be in y_true

有什么解决办法吗?

labels confusion_matrix 的参数是索引矩阵的标签列表。因此,如果您将 y 表示为 ['a','b','a'],那么您可以使用 labels 作为 ['a','b'] 对其进行索引。

此外,confusion_matrix returns 是一个 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