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 曲線下的面積。
注意事項
由於閾值是從低到高排序的,因此在回傳它們時會將它們反轉,以確保它們對應於
fpr
和tpr
,這兩者在計算過程中是以相反的順序排序的。為確保曲線從
(0, 0)
開始,會為tpr=0
和fpr=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 ])