mars.learn.metrics.roc_auc_score#
- mars.learn.metrics.roc_auc_score(y_true, y_score, *, average='macro', sample_weight=None, max_fpr=None, multi_class='raise', labels=None, session=None, run_kwargs=None)[来源]#
计算接收者操作特征曲线下面积(ROC AUC) 从预测分数。
注意:此实现可用于二元、多类和多标签分类,但有一些限制适用(请参见参数)。
在用户指南中阅读更多内容。
- Parameters
y_true (数组类似,形状 (n_samples,) 或 (n_samples, n_classes)) – 真实标签或二进制标签指示符。二进制和多类情况期望标签的形状为 (n_samples,),而多标签情况期望的二进制标签指示符的形状为 (n_samples, n_classes)。
y_score (数组类似,形状为 (样本数量,) 或 (样本数量, 类的数量)) –
目标分数。
在二元情况下,它对应于形状为 (样本数量,)的数组。可以提供概率估计和非阈值决策值。概率估计对应于标签较大类别的概率,即estimator.classes_[1],因此 estimator.predict_proba(X, y)[:, 1]。决策值对应于estimator.decision_function(X, y)的输出。 有关更多信息,请参见用户指南;
在多类情况下,它对应于形状为 (样本数量, 类的数量)的由predict_proba方法提供的概率估计。概率估计必须 在可能的类别中总和为1。此外,类别分数的顺序必须与labels的顺序相对应(如果提供),或者与y_true中标签的数字或字典顺序相对应。有关更多信息,请参见用户指南;
在多标签情况下,它对应于形状为 (样本数量, 类的数量)的数组。概率估计由predict_proba方法提供,非阈值决策值由decision_function方法提供。概率估计对应于每个输出的分类器的较大标签类别的概率。有关更多信息,请参见用户指南。
average ({'micro', 'macro', 'samples', 'weighted'} 或者 None, 默认='macro') –
如果
None, 将返回每个类别的得分。否则,这将确定在数据上执行的平均类型: 注意:多类 ROC AUC 目前仅处理 'macro' 和 'weighted' 平均。'micro':通过将标签指示矩阵的每个元素视为标签来全局计算指标。
'macro':对每个标签计算指标,并找到它们的非加权均值。 这不考虑标签不平衡。
'weighted':对每个标签计算指标,并找到它们的平均值,加权由支持(每个标签的真实实例数量)决定。
'samples':对每个实例计算指标,并找到它们的平均值。
当
y_true为二元时,将被忽略。sample_weight (类数组,形状 (n_samples,), 默认值=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'。labels (类似数组的形状(n_classes,), 默认=None) – 仅用于多类目标。标签列表,用于索引
y_score中的类。如果None,则使用y_true中标签的数值或字典序排列。
- Returns
auc(曲线下面积)
- Return type
参考文献
- 1
- 2
- 3
普罗沃斯特, F., 多明戈斯, P. (2000). 训练良好的 PETs: 改善概率估计树 (第6.2节), CeDER工作论文 #IS-00-04, 纽约大学斯特恩商学院.
- 4
- 5
Hand, D.J., Till, R.J. (2001). 对多类别分类问题的ROC曲线下面积的简单推广。机器学习, 45(2), 171-186.
另请参阅
average_precision_score精确率-召回率曲线下的面积。
roc_curve计算接收者操作特征 (ROC) 曲线。
RocCurveDisplay.from_estimator根据估计器和一些数据绘制接收器操作特性(ROC)曲线。
RocCurveDisplay.from_predictions根据真实值和预测值绘制接收者操作特征(ROC)曲线。
示例
二元情况:
>>> from sklearn.datasets import load_breast_cancer >>> from sklearn.linear_model import LogisticRegression >>> from mars.learn.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...])