sklearn.metrics.roc_auc_score?

sklearn.metrics.roc_auc_score(y_true, y_score, *, average='macro', sample_weight=None, max_fpr=None, multi_class='raise', labels=None)

源碼

根據預測分數計算接收器工作特性曲線下的面積(ROC AUC)。

注意:此實現可與二進制,多類和多標簽分類一起使用,但有一些限制(請參閱參數)。

用戶指南中閱讀更多內容。

參數 說明
y_true array-like of shape (n_samples,) or (n_samples, n_classes)
真實標簽或二進制標簽指示符。二元和多類情況下期望形狀(n_samples,)的標簽,而多標簽情況則期望形狀(n_samples,n_classes)的二進制標簽指示符。
y_score array-like of shape (n_samples,) or (n_samples, n_classes)
目標分數。在二進制和多標簽的情況下,這些值可以是概率估計值,也可以是非閾值決策值(由某些分類器上的Decision_function返回)。在多類情況下,這些必須是總和為1的概率估計值。在二進制情況下,期望的形狀是(n_samples,),并且分數必須是標簽較大的類別的分數。 多類和多標簽的情況需要一個形狀(n_samples,n_classes)。在多類情況下,類分數的順序必須與標簽的順序(如果提供)相對應,或者與y_true中標簽的數字或詞典順序相對應。
average {‘micro’, ‘macro’, ‘samples’, ‘weighted’} or None, default=’macro’
如果為None,則返回每個類的分數。否則,將根據數據的平均表現確定類型:注意:多類ROC AUC當前僅處理‘macro’和‘weighted’平均值。

- 'micro':

通過將標簽指標矩陣的每個元素都視為標簽來全局計算指標。
- 'macro':
計算每個標簽的指標,并找到其未加權平均值。此處未考慮標簽不平衡。
- 'weighted':
計算每個標簽的指標,并找到它們的平均值,然后按支持率(每個標簽的真實實例數)加權。
- 'samples':
計算每個實例的指標,并找到它們的平均值。
當y_true為二進制時將被忽略。
sample_weight array-like of shape (n_samples,), default=None
樣本權重。
max_fpr float > 0 and <= 1, default=None
如果不為None,則返回范圍為[0,max_fpr]的標準化部分AUC [2]。 對于多類情況,max_fpr應該等于None或1.0,因為多類當前不支持AUC ROC部分計算。
multi_class {‘raise’, ‘ovr’, ‘ovo’}, default=’raise’
僅多類。確定要使用的配置類型。默認值引發錯誤,因此必須顯式傳遞'ovr'或'ovo'。

- 'ovr':
計算每個類相對于其他類的AUC[3] [4]。這以與多標簽案例相同的方式對待多類別案例。 即使average=='macro',也對類失衡敏感,因為類失衡會影響每個‘rest’分組的組成。
- 'ovo':
計算類別的所有可能的成對組合的平均AUC [5]。 當均average == 'macro'時,對類失衡不敏感。
labels array-like of shape (n_classes,), default=None
僅多類。 索引y_score中的類的標簽列表。如果為None,則使用y_true中標簽的數字或字典順序。
返回值 說明
auc float

另見

average_precision_score

precision-recall曲線下的面積

roc_curve

計算接收器工作特性(ROC)曲線

參考

1 Wikipedia entry for the Receiver operating characteristic

2 Analyzing a portion of the ROC curve. McClish, 1989

3 Provost, F., Domingos, P. (2000). Well-trained PETs: Improving probability estimation trees (Section 6.2), CeDER Working Paper #IS-00-04, Stern School of Business, New York University.

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

5 Hand, D.J., Till, R.J. (2001). A Simple Generalisation of the Area Under the ROC Curve for Multiple Class Classification Problems. Machine Learning, 45(2), 171-186.

示例

>>> import numpy as np
>>> from sklearn.metrics import roc_auc_score
>>> y_true = np.array([0011])
>>> y_scores = np.array([0.10.40.350.8])
>>> roc_auc_score(y_true, y_scores)
0.75