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 (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_fprчисло с плавающей точкой > 0 и <= 1, по умолчанию=None
-
Если значение не равно
None, возвращается стандартизованная частичная AUC [2] в диапазоне [0, max_fpr]. Для многоклассового случаяmax_fprдолжно быть равно либоNone, либо1.0, поскольку вычисление частичной ROC AUC для нескольких классов в настоящее время не поддерживается. - multi_class{‘raise’, ‘ovr’, ‘ovo’}, по умолчанию=’raise’
-
Используется только для многоклассовых целевых переменных. Определяет тип используемой конфигурации. Значение по умолчанию вызывает ошибку, поэтому необходимо явно передать либо
'ovr', либо'ovo'.-
'ovr': -
Означает «один против остальных». Вычисляет AUC каждого класса относительно остальных [3] [4]. Многоклассовый случай рассматривается так же, как мультиметочный. Чувствителен к дисбалансу классов, даже если задано
average == 'macro', поскольку дисбаланс классов влияет на состав каждой группы «остальных». -
'ovo': -
Означает «один против одного». Вычисляет среднюю AUC по всем возможным попарным комбинациям классов [5]. Не чувствителен к дисбалансу классов, если задано
average == 'macro'.
-
- 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.
Ссылки
[3]Провост, Ф., Домингош, П. (2000). Хорошо обученные PET: улучшение деревьев оценки вероятностей (раздел 6.2), рабочий документ CeDER #IS-00-04, Школа бизнеса Стерна, Нью-Йоркский университет.
[5]Примеры
Бинарный случай:
>>> 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="newton-cholesky", 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="newton-cholesky").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_score = clf.predict_proba(X) >>> # extract the positive columns for each output >>> y_score = np.transpose([score[:, 1] for score in y_score]) >>> roc_auc_score(y, y_score, average=None) array([0.828, 0.852, 0.94, 0.869, 0.95]) >>> from sklearn.linear_model import RidgeClassifierCV >>> clf = RidgeClassifierCV().fit(X, y) >>> roc_auc_score(y, clf.decision_function(X), average=None) array([0.82, 0.847, 0.93, 0.872, 0.944])
Примеры в галерее
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.metrics.roc_auc_score.html