为什么我的混淆矩阵只返回一个数字?

Arn*_*aud 9 python confusion-matrix scikit-learn

我正在做二元分类。每当我的预测等于真实情况时,我就会sklearn.metrics.confusion_matrix返回一个值。难道没有问题吗?

from sklearn.metrics import confusion_matrix
print(confusion_matrix([True, True], [True, True])
# [[2]]
Run Code Online (Sandbox Code Playgroud)

我期望类似的东西:

[[2 0]
 [0 0]]
Run Code Online (Sandbox Code Playgroud)

Arn*_*aud 12

您应该填写labels=[True, False]

from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_true=[True, True], y_pred=[True, True], labels=[True, False])
print(cm)

# [[2 0]
#  [0 0]]
Run Code Online (Sandbox Code Playgroud)

为什么?

文档中,输出confusion_matrix(y_true, y_pred)是:

C:形状为 (n_classes, n_classes) 的 ndarray

该变量n_classes是:

  • y_true猜测为或中唯一值的数量y_pred
  • 取自可选参数的长度labels

在您的情况下,因为您没有填写labels,所以该变量n_classes是根据唯一值的数量猜测的,其中[True, True]1 。因此结果。