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 |
另见:
precision-recall曲线下的面积
计算接收器工作特性(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([0, 0, 1, 1])
>>> y_scores = np.array([0.1, 0.4, 0.35, 0.8])
>>> roc_auc_score(y_true, y_scores)
0.75