多標籤混淆矩陣#

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

為每個類別或樣本計算混淆矩陣。

於版本 0.21 新增。

計算類別式(預設)或樣本式(samplewise=True)多標籤混淆矩陣,以評估分類的準確性,並輸出每個類別或樣本的混淆矩陣。

在多標籤混淆矩陣 \(MCM\) 中,真正負例的計數是 \(MCM_{:,0,0}\),偽負例是 \(MCM_{:,1,0}\),真正正例是 \(MCM_{:,1,1}\),而偽正例是 \(MCM_{:,0,1}\)

多類別數據將被視為在 one-vs-rest 轉換下進行二元化處理。返回的混淆矩陣將按照 (y_true, y_pred) 聯集中已排序的唯一標籤順序排列。

請在使用者指南中閱讀更多資訊。

參數:
y_true{類陣列 (array-like), 稀疏矩陣},形狀為 (n_samples, n_outputs) 或 (n_samples,)

真實(正確)的目標值。

y_pred{類陣列 (array-like), 稀疏矩陣},形狀為 (n_samples, n_outputs) 或 (n_samples,)

分類器返回的估計目標值。

sample_weight類陣列 (array-like),形狀為 (n_samples,),預設值為 None

樣本權重。

labels類陣列 (array-like),形狀為 (n_classes,),預設值為 None

類別列表或欄索引,用於選擇部分類別(或強制包含資料中不存在的類別)。

samplewise布林值 (bool),預設值為 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 計算類別式或樣本式的多標籤混淆矩陣,在多類別任務中,標籤會以 one-vs-rest 的方式二元化;而 confusion_matrix 計算每個類別之間混淆的一個混淆矩陣。

範例

多標籤指示器 (Multilabel-indicator) 情況

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

多類別 (Multiclass) 情況

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