ROC AUC得分#
- sklearn.metrics.roc_auc_score(y_true, y_score, *, average='macro', sample_weight=None, max_fpr=None, multi_class='raise', labels=None)[source]#
- 根据预测分数计算受试者工作特征曲线下面积 (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,)的数组。可以提供概率估计值和非阈值决策值。概率估计值对应于**标签较大的类的概率**,即- 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,默认为 'macro'
- 如果为 - None,则返回每个类别的分数。否则,这将确定对数据执行的平均类型。注意:多类别 ROC AUC 目前仅处理 'macro' 和 'weighted' 平均值。对于多类别目标,- average=None仅在- multi_class='ovr'时实现,而- average='micro'仅在- multi_class='ovr'时实现。- 'micro':
- 通过将标签指示矩阵的每个元素都视为一个标签来全局计算指标。 
- 'macro':
- 计算每个标签的指标,并找到它们的未加权平均值。这不会考虑标签不平衡。 
- 'weighted':
- 计算每个标签的指标,并找到它们的平均值,并根据支持度(每个标签的真实实例数)进行加权。 
- 'samples':
- 计算每个实例的指标,并找到它们的平均值。 
 - 当 - y_true为二元时将被忽略。
- sample_weight形状为 (n_samples,) 的类数组,默认为 None
- 样本权重。 
- max_fprfloat > 0 且 <= 1,默认为 None
- 如果不是 - None,则返回 [0, max_fpr] 范围内的标准化部分 AUC [2]。对于多类别情况,- max_fpr应该等于- None或- 1.0,因为目前不支持多类别的 AUC ROC 部分计算。
- multi_class{'raise','ovr','ovo'},默认为 'raise'
- 仅用于多类别目标。确定要使用的配置类型。默认值会引发错误,因此必须显式传递 'ovr' 或 'ovo'。 
- labels形状为 (n_classes,) 的类数组,默认为 None
- 仅用于多类别目标。 - y_score中索引类别的标签列表。如果为- None,则使用- y_true中标签的数值或词典顺序。
 
- 返回:
- auc浮点数
- 曲线下面积得分。 
 
 - 另请参见 - average_precision_score
- 精确召回曲线下的面积。 
- roc_curve
- 计算受试者工作特征 (ROC) 曲线。 
- RocCurveDisplay.from_estimator
- 给定估计器和一些数据,绘制受试者工作特征 (ROC) 曲线。 
- RocCurveDisplay.from_predictions
- 给定真实值和预测值,绘制受试者工作特征 (ROC) 曲线。 
 - 备注 - 基尼系数是衡量二元分类器排序能力的综合指标。它使用 ROC 下的面积表示如下 - G = 2 * AUC - 1 - 其中 G 为基尼系数,AUC 为 ROC-AUC 分数。这种归一化将确保随机猜测的预期得分为 0,并且其上限为 1。 - 参考文献 [1][3]- Provost, F.,Domingos, P. (2000)。训练有素的 PET:改进概率估计树(第 6.2 节),CeDER 工作论文 #IS-00-04,纽约大学斯特恩商学院。 [6]- 示例 - 二元情况 - >>> 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]) np.float64(0.99...) >>> roc_auc_score(y, clf.decision_function(X)) np.float64(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') np.float64(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...]) 
 
     
 
 
 
 
