精確度分數#

sklearn.metrics.precision_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')[原始碼]#

計算精確度。

精確度是 tp / (tp + fp) 的比率,其中 tp 是真正例的數量,而 fp 是假正例的數量。直觀來說,精確度是指分類器不將負樣本標記為正樣本的能力。

最佳值為 1,最差值為 0。

除了 binary 目標以外的支援,是透過將 多類別多標籤 資料視為一組二元問題的集合(每個標籤一個)來實現的。對於 二元 的情況,設定 average='binary' 將會回傳 pos_label 的精確度。如果 average 不是 'binary',則 pos_label 會被忽略,並且會計算兩個類別的精確度,然後取平均值或同時回傳(當 average=None 時)。類似地,對於 多類別多標籤 目標,所有 labels 的精確度會根據 average 參數而回傳或取平均值。使用 labels 指定要計算精確度的標籤集。

請在 使用者指南 中閱讀更多內容。

參數:
y_true一維類陣列,或標籤指示陣列/稀疏矩陣

真實(正確)的目標值。

y_pred一維類陣列,或標籤指示陣列/稀疏矩陣

分類器回傳的預估目標值。

labels類陣列,預設為None

average != 'binary' 時要包含的標籤集,以及當 average is None 時的標籤順序。可以排除資料中存在的標籤,例如在多類別分類中排除「負類別」。可以包含資料中不存在的標籤,並且會被「分配」 0 個樣本。對於多標籤目標,標籤是欄索引。預設情況下,會使用 y_truey_pred 中所有已排序的標籤。

在 0.17 版本中變更:為多類別問題改進了 labels 參數。

pos_labelint、float、bool 或 str,預設值為 1

如果 average='binary' 且資料為二元時,要回報的類別;否則此參數將被忽略。對於多類別或多標籤目標,請設定 labels=[pos_label]average != 'binary' 以僅回報一個標籤的指標。

average{‘micro’, ‘macro’, ‘samples’, ‘weighted’, ‘binary’} 或 None,預設值為 ‘binary’

此參數為多類別/多標籤目標所必需。如果 None,則會回傳每個類別的指標。否則,這將決定對資料執行的平均類型。

'binary':

僅回報由 pos_label 指定的類別的結果。這僅適用於目標 (y_{true,pred}) 為二元的情況。

'micro':

透過計算總真正例、假負例和假正例來全域計算指標。

'macro':

計算每個標籤的指標,並找到它們的未加權平均值。這不考慮標籤不平衡。

'weighted':

計算每個標籤的指標,並找到它們的平均值,該平均值由支持度(每個標籤的真實實例數)加權。這會改變 'macro' 以考慮標籤不平衡;它可能會導致 F 分數不在精確度和召回率之間。

'samples':

計算每個實例的指標,並找到它們的平均值(僅適用於多標籤分類,其中這與 accuracy_score 不同)。

sample_weight形狀為 (n_samples,) 的類陣列,預設值為 None

樣本權重。

zero_division{“warn”, 0.0, 1.0, np.nan},預設值為 “warn”

設定當出現零除法時要回傳的值。

注意事項

  • 如果設定為 “warn”,則行為類似於 0,但也會引發警告。

  • 如果設定為 np.nan,則此類值將從平均值中排除。

在 1.3 版本中新增:新增了 np.nan 選項。

回傳值:
precisionfloat (如果 average 不是 None) 或形狀為 (n_unique_labels,) 的 float 陣列

二元分類中正類別的精確度,或多類別任務中每個類別精確度的加權平均值。

另請參閱

精確度-召回率-F 分數支持 (precision_recall_fscore_support)

計算每個類別的精確度、召回率、F 值和支持度。

召回率分數 (recall_score)

計算比率 tp / (tp + fn),其中 tp 是真正例的數量,而 fn 是假負例的數量。

PrecisionRecallDisplay.from_estimator

給定估計器和一些資料,繪製精確度-召回率曲線。

PrecisionRecallDisplay.from_predictions

給定二元類別預測,繪製精確度-召回率曲線。

多標籤混淆矩陣 (multilabel_confusion_matrix)

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

注意事項

true positive + false positive == 0 時,精確度會回傳 0 並引發 UndefinedMetricWarning。可以使用 zero_division 修改此行為。

範例

>>> import numpy as np
>>> from sklearn.metrics import precision_score
>>> y_true = [0, 1, 2, 0, 1, 2]
>>> y_pred = [0, 2, 1, 0, 0, 1]
>>> precision_score(y_true, y_pred, average='macro')
0.22...
>>> precision_score(y_true, y_pred, average='micro')
0.33...
>>> precision_score(y_true, y_pred, average='weighted')
0.22...
>>> precision_score(y_true, y_pred, average=None)
array([0.66..., 0.        , 0.        ])
>>> y_pred = [0, 0, 0, 0, 0, 0]
>>> precision_score(y_true, y_pred, average=None)
array([0.33..., 0.        , 0.        ])
>>> precision_score(y_true, y_pred, average=None, zero_division=1)
array([0.33..., 1.        , 1.        ])
>>> precision_score(y_true, y_pred, average=None, zero_division=np.nan)
array([0.33...,        nan,        nan])
>>> # multilabel classification
>>> y_true = [[0, 0, 0], [1, 1, 1], [0, 1, 1]]
>>> y_pred = [[0, 0, 0], [1, 1, 1], [1, 1, 0]]
>>> precision_score(y_true, y_pred, average=None)
array([0.5, 1. , 1. ])