multilabel_confusion_matrix#

sklearn.metrics.multilabel_confusion_matrix(y_true, y_pred, *, sample_weight=None, labels=None, samplewise=False)[source]#

为每个类别或样本计算混淆矩阵。

0.21 版本新增。

计算类别级别(默认)或样本级别(samplewise=True)的多标签混淆矩阵,以评估分类的准确性,并为每个类别或样本输出混淆矩阵。

在多标签混淆矩阵 \(MCM\) 中,真负例计数为 \(MCM_{:,0,0}\),假负例计数为 \(MCM_{:,1,0}\),真正例计数为 \(MCM_{:,1,1}\),假正例计数为 \(MCM_{:,0,1}\)

多类别数据将被视为在“一对多”转换下进行二值化。返回的混淆矩阵将按照 (y_true, y_pred) 联合中唯一标签的排序顺序排列。

欲了解更多信息,请参阅用户指南

参数:
y_true{类数组, 稀疏矩阵} 形状为 (n_samples, n_outputs) 或 (n_samples,)

真实(正确)的目标值。

y_pred{类数组, 稀疏矩阵} 形状为 (n_samples, n_outputs) 或 (n_samples,)

分类器返回的估计目标。

sample_weight类数组,形状为 (n_samples,), 默认值为 None

样本权重。

labels类数组,形状为 (n_classes,), 默认值为 None

一个类别或列索引列表,用于选择部分(或强制包含数据中不存在的类别)。

samplewise布尔值, 默认值为 False

在多标签情况下,这会为每个样本计算一个混淆矩阵。

返回:
multi_confusionndarray,形状为 (n_outputs, 2, 2)

一个 2x2 的混淆矩阵,对应输入中的每个输出。在计算类别级别 multi_confusion(默认)时,n_outputs = n_labels;在计算样本级别 multi_confusion(samplewise=True)时,n_outputs = n_samples。如果定义了 labels,结果将按 labels 中指定的顺序返回,否则默认按排序顺序返回结果。

另请参阅

confusion_matrix

计算混淆矩阵以评估分类器的准确性。

说明

multilabel_confusion_matrix 计算类别级别或样本级别的多标签混淆矩阵,在多类别任务中,标签以“一对多”的方式进行二值化;而 confusion_matrix 则计算每两个类别之间的混淆矩阵。

示例

多标签指示器情况

>>> import numpy as np
>>> from sklearn.metrics import multilabel_confusion_matrix
>>> y_true = np.array([[1, 0, 1],
...                    [0, 1, 0]])
>>> y_pred = np.array([[1, 0, 0],
...                    [0, 1, 1]])
>>> multilabel_confusion_matrix(y_true, y_pred)
array([[[1, 0],
        [0, 1]],

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

       [[0, 1],
        [1, 0]]])

多类别情况

>>> y_true = ["cat", "ant", "cat", "cat", "ant", "bird"]
>>> y_pred = ["ant", "ant", "cat", "cat", "ant", "cat"]
>>> multilabel_confusion_matrix(y_true, y_pred,
...                             labels=["ant", "bird", "cat"])
array([[[3, 1],
        [0, 2]],

       [[5, 0],
        [1, 0]],

       [[2, 1],
        [1, 2]]])