ROC 曲線#

sklearn.metrics.roc_curve(y_true, y_score, *, pos_label=None, sample_weight=None, drop_intermediate=True)[來源]#

計算接收者操作特徵 (ROC)。

注意:此實作限制於二元分類任務。

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

參數:
y_true形狀為 (n_samples,) 的類陣列

真實二元標籤。如果標籤不是 {-1, 1} 或 {0, 1},則應明確指定 pos_label。

y_score形狀為 (n_samples,) 的類陣列

目標分數,可以是正類別的機率估計、信賴度值或未經閾值處理的決策度量(如某些分類器上的「decision_function」所回傳)。

pos_labelint、float、bool 或 str,預設值=None

正類別的標籤。當 pos_label=None 時,如果 y_true 在 {-1, 1} 或 {0, 1} 中,則將 pos_label 設為 1,否則會引發錯誤。

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

樣本權重。

drop_intermediate布林值,預設值為 True

是否捨棄某些次優的閾值,這些閾值不會出現在繪製的 ROC 曲線圖上。這對於建立較簡潔的 ROC 曲線很有用。

在 0.17 版本中新增:參數 drop_intermediate

回傳值:
fpr形狀為 (>2,) 的 ndarray

遞增的偽陽性率,使得元素 i 是分數 >= thresholds[i] 的預測的偽陽性率。

tpr形狀為 (>2,) 的 ndarray

遞增的真陽性率,使得元素 i 是分數 >= thresholds[i] 的預測的真陽性率。

thresholds形狀為 (n_thresholds,) 的 ndarray

用於計算 fpr 和 tpr 的決策函數的遞減閾值。thresholds[0] 表示沒有任何實例被預測,並且被任意設定為 np.inf

另請參閱

RocCurveDisplay.from_estimator

繪製給定估計器和某些資料的接收者操作特徵 (ROC) 曲線。

RocCurveDisplay.from_predictions

繪製給定真實值和預測值的接收者操作特徵 (ROC) 曲線。

det_curve

計算不同機率閾值的錯誤率。

roc_auc_score

計算 ROC 曲線下的面積。

注意事項

由於閾值是從低到高排序的,因此在回傳它們時會將它們反轉,以確保它們對應於 fprtpr,這兩者在計算過程中是以相反的順序排序的。

為確保曲線從 (0, 0) 開始,會為 tpr=0fpr=0 的情況新增任意閾值。此閾值對應於 np.inf

參考文獻

[2]

Fawcett T. An introduction to ROC analysis[J]. Pattern Recognition Letters, 2006, 27(8):861-874.

範例

>>> import numpy as np
>>> from sklearn import metrics
>>> y = np.array([1, 1, 2, 2])
>>> scores = np.array([0.1, 0.4, 0.35, 0.8])
>>> fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)
>>> fpr
array([0. , 0. , 0.5, 0.5, 1. ])
>>> tpr
array([0. , 0.5, 0.5, 1. , 1. ])
>>> thresholds
array([ inf, 0.8 , 0.4 , 0.35, 0.1 ])