當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python sklearn roc_auc_score用法及代碼示例


本文簡要介紹python語言中 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形狀為 (n_samples,) 或 (n_samples, n_classes) 的類似數組

真標簽或二進製標簽指示符。二元和多類情況需要形狀為 (n_samples,) 的標簽,而多標簽情況需要形狀為 (n_samples, n_classes) 的二元標簽指示符。

y_score形狀為 (n_samples,) 或 (n_samples, n_classes) 的類似數組

目標分數。

  • 在二進製情況下,它對應於一個形狀數組(n_samples,).可以提供概率估計和非閾值決策值。概率估計對應於具有更大標簽的類的概率, IE。estimator.classes_[1]因此estimator.predict_proba(X, y)[:, 1].決策值對應於estimator.decision_function(X, y).查看更多信息用戶指南;
  • 在多類情況下,它對應於一個形狀數組(n_samples, n_classes)由提供的概率估計predict_proba方法。概率估計必須在所有可能的類中總和為 1。此外,類分數的順序必須與labels,如果提供,或其他標簽的數字或字典順序y_true.查看更多信息用戶指南;
  • 在多標簽情況下,它對應於一個形狀數組(n_samples, n_classes).概率估計由predict_proba方法和非閾值決策值由decision_function方法。概率估計對應於每個輸出具有更大標簽的類的概率的分類器。查看更多信息用戶指南.
average{‘micro’, ‘macro’, ‘samples’, ‘weighted’} 或無,默認='宏'

如果 None ,則返回每個類的分數。否則,這確定對數據執行的平均類型: 注意:多類 ROC AUC 當前僅處理 ‘macro’ 和 ‘weighted’ 平均值。

'micro'

通過將標簽指標矩陣的每個元素視為標簽來全局計算指標。

'macro'

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

'weighted'

計算每個標簽的指標,並找到它們的平均值,按支持度加權(每個標簽的真實實例數)。

'samples'

計算每個實例的指標,並找到它們的平均值。

y_true 為二進製時將被忽略。

sample_weight形狀類似數組 (n_samples,),默認=None

樣本權重。

max_fpr浮點數 > 0 和 <= 1,默認 = 無

如果不是 None ,則返回 [0, max_fpr] 範圍內的標準化部分 AUC [2]。對於多類情況, max_fpr 應該等於 None1.0,因為多類目前不支持 AUC ROC 部分計算。

multi_class{‘raise’, ‘ovr’, ‘ovo’},默認='raise'

僅用於多類目標。確定要使用的配置類型。默認值會引發錯誤,因此必須顯式傳遞 'ovr''ovo'

'ovr'

代表One-vs-rest。計算每個類別相對於其餘類別的 AUC [3] [4]。這以與多標簽情況相同的方式處理多類情況。即使 average == 'macro' 也對類別不平衡敏感,因為類別不平衡會影響每個 ‘rest’ 分組的組成。

'ovo'

代表One-vs-one。計算類的所有可能的成對組合的平均 AUC [5]。 average == 'macro' 時對類不平衡不敏感。

labels形狀類似數組 (n_classes,),默認=無

僅用於多類目標。索引 y_score 中的類的標簽列表。如果 None ,則使用 y_true 中標簽的數字或字典順序。

返回

auc浮點數

參考

1

接收器操作特性的維基百科條目

2

分析 ROC 曲線的一部分。麥克利什,1989

3

教務長,F.,多明戈斯,P. (2000)。 Well-trained PETs:改進概率估計樹(第 6.2 節),CeDER 工作論文 #IS-00-04,紐約大學斯特恩商學院。

4

Fawcett, T. (2006)。 ROC 分析簡介。模式識別快報,27(8),861-874。

5

手,D.J.,蒂爾,R.J. (2001 年)。多類分類問題的 ROC 曲線下麵積的簡單概括。機器學習,45(2),171-186。

例子

二進製情況:

>>> from sklearn.datasets import load_breast_cancer
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.metrics import roc_auc_score
>>> X, y = load_breast_cancer(return_X_y=True)
>>> clf = LogisticRegression(solver="liblinear", random_state=0).fit(X, y)
>>> roc_auc_score(y, clf.predict_proba(X)[:, 1])
0.99...
>>> roc_auc_score(y, clf.decision_function(X))
0.99...

多類案例:

>>> from sklearn.datasets import load_iris
>>> X, y = load_iris(return_X_y=True)
>>> clf = LogisticRegression(solver="liblinear").fit(X, y)
>>> roc_auc_score(y, clf.predict_proba(X), multi_class='ovr')
0.99...

多標簽案例:

>>> import numpy as np
>>> from sklearn.datasets import make_multilabel_classification
>>> from sklearn.multioutput import MultiOutputClassifier
>>> X, y = make_multilabel_classification(random_state=0)
>>> clf = MultiOutputClassifier(clf).fit(X, y)
>>> # get a list of n_output containing probability arrays of shape
>>> # (n_samples, n_classes)
>>> y_pred = clf.predict_proba(X)
>>> # extract the positive columns for each output
>>> y_pred = np.transpose([pred[:, 1] for pred in y_pred])
>>> roc_auc_score(y, y_pred, average=None)
array([0.82..., 0.86..., 0.94..., 0.85... , 0.94...])
>>> from sklearn.linear_model import RidgeClassifierCV
>>> clf = RidgeClassifierCV().fit(X, y)
>>> roc_auc_score(y, clf.decision_function(X), average=None)
array([0.81..., 0.84... , 0.93..., 0.87..., 0.94...])

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.metrics.roc_auc_score。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。