maxframe.learn.metrics.roc_auc_score#
- maxframe.learn.metrics.roc_auc_score(y_true, y_score, *, average='macro', sample_weight=None, max_fpr=None, multi_class='raise', labels=None, execute=False, session=None, run_kwargs=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)) -- 目标得分。* 在二分类情况下,它对应于形状为 (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'} 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':表示 One-vs-rest。计算每个类别与其余类别的 AUC [3] [4]。这将以与多标签情况相同的方式处理多分类情况。即使average == 'macro',对类别不平衡也敏感,因为类别不平衡会影响每个 'rest' 组合的构成。'ovo':表示 One-vs-one。计算所有可能类别对组合的平均 AUC [5]。当average == 'macro'时,对类别不平衡不敏感。labels (array-like of shape (n_classes,), default=None) -- 仅用于多类目标。用于索引
y_score中类别的标签列表。如果为None,则使用y_true中标签的数字或字典序。
- 返回:
auc
- 返回类型:
引用
参见
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 maxframe.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]).execute() 0.99... >>> roc_auc_score(y, clf.decision_function(X)).execute() 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').execute() 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).execute() 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).execute() array([0.81..., 0.84... , 0.93..., 0.87..., 0.94...])