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)[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’} or None, default=’macro’
-
Если
None, возвращаются оценки для каждого класса. В противном случае это определяет тип усреднения, выполняемого над данными. Примечание: многоклассовый AUC ROC в настоящее время обрабатывает только средние значения ‘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, возвращается стандартизованная частичная AUC [2] в диапазоне [0, max_fpr]. Для многоклассового случая,max_fpr, должно быть либо равноNone, либо1.0, так как в настоящее время вычисление частичной AUC ROC для многоклассового случая не поддерживается. - 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.
- Возвращает:
-
- aucfloat
-
Значение площади под кривой.
См. также
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]Provost, F., Domingos, P. (2000). Well-trained PETs: Improving probability estimation trees (Section 6.2), CeDER Working Paper #IS-00-04, Stern School of Business, New York University.
[4]Fawcett, T. (2006). An introduction to ROC analysis. Pattern Recognition Letters, 27(8), 861-874.
[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="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...])
Примеры из галереи
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.metrics.roc_auc_score.html