Spec-Zone.ru › scikit-learn

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.

Ссылки

[1]

Статья в Википедии о характеристической кривой приёмника

[2]

Анализ части ROC-кривой. Макклиш, 1989

[3]

Провост, Ф., Домингош, П. (2000). Хорошо обученные PET: улучшение деревьев оценки вероятностей (раздел 6.2), рабочий документ CeDER #IS-00-04, Школа бизнеса Стерна, Нью-Йоркский университет.

[4]

Фосетт, Т. (2006). Введение в анализ ROC. Pattern Recognition Letters, 27(8), 861–874.

[5]

Хэнд, Д. Дж., Тилл, Р. Дж. (2001). Простое обобщение площади под ROC-кривой для задач классификации с несколькими классами. Machine Learning, 45(2), 171–186.

[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="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])

Примеры в галерее

Калибровочные кривые вероятностей

Построение графика вероятностей классов

Отбор признаков на основе модели и последовательный отбор признаков

Оценка качества классификатора с помощью матрицы ошибок

Статистическое сравнение моделей с помощью поиска по сетке

Характеристическая кривая приёмника (ROC) для нескольких классов

Основные нововведения scikit-learn 0.22

Основные нововведения scikit-learn 1.4

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API