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