Spec-Zone.ru › scikit-learn

average_precision_score

sklearn.metrics.average_precision_score(y_true, y_score, *, average='macro', pos_label=1, sample_weight=None)[исходный код]

Вычисляет среднюю точность (AP) по оценкам предсказаний.

AP представляет кривую «точность–полнота» как среднее значение точности, взвешенное по точкам порога; в качестве веса используется увеличение полноты относительно предыдущего порога:

\[\text{AP} = \sum_n (R_n - R_{n-1}) P_n\]

где \(P_n\) и \(R_n\) — точность и полнота при n-м пороге [1]. В этой реализации интерполяция не используется; она отличается от вычисления площади под кривой «точность–полнота» методом трапеций, который использует линейную интерполяцию и может давать слишком оптимистичную оценку.

Подробнее см. в руководстве пользователя.

Параметры:
y_trueмассивоподобный объект формы (n_samples,) или (n_samples, n_classes)

Истинные бинарные метки, индикаторы многометочной классификации (в виде матрицы индикаторов многометочной классификации) или метки многоклассовой классификации.

y_scoreмассивоподобный объект формы (n_samples,) или (n_samples, n_classes)

Оценки целевых классов: вероятности принадлежности к положительному классу или значения решающей функции без применения порога (возвращаемые методом decision_function некоторых классификаторов). Для оценок decision_function значения, большие или равные нулю, должны соответствовать положительному классу.

average{‘micro’, ‘samples’, ‘weighted’, ‘macro’} или None, по умолчанию=’macro’

Если None, возвращаются оценки для каждого класса. В противном случае этот параметр определяет способ усреднения данных:

'micro':

Вычислить метрики глобально, рассматривая каждый элемент матрицы индикаторов меток как отдельную метку.

'macro':

Вычислить метрики для каждой метки и найти их невзвешенное среднее. При этом дисбаланс меток не учитывается.

'weighted':

Вычислить метрики для каждой метки и найти их среднее, взвешенное по числу объектов (числу истинных примеров каждой метки).

'samples':

Вычислить метрики для каждого объекта и найти их среднее.

Игнорируется, если y_true является бинарным.

pos_labelint, float, bool или str, по умолчанию=1

Метка положительного класса. Применяется только для бинарной y_true. Для y_true типа «индикатор многометочной классификации» значение pos_label фиксировано равным 1.

sample_weightмассивоподобный объект формы (n_samples,), по умолчанию=None

Веса объектов.

Возвращает:
average_precisionfloat

Оценка средней точности.

См. также

roc_auc_score

Вычисляет площадь под ROC-кривой.

precision_recall_curve

Вычисляет пары «точность–полнота» для различных порогов вероятности.

PrecisionRecallDisplay.from_estimator

Строит кривую «точность–полнота» с помощью оценивателя и данных.

PrecisionRecallDisplay.from_predictions

Строит кривую «точность–полнота» по истинным и предсказанным меткам.

Примечания

Изменено в версии 0.19: Вместо линейной интерполяции между рабочими точками точность взвешивается по изменению полноты относительно последней рабочей точки.

Ссылки

[1]

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

Примеры

>>> import numpy as np
>>> from sklearn.metrics import average_precision_score
>>> y_true = np.array([0, 0, 1, 1])
>>> y_scores = np.array([0.1, 0.4, 0.35, 0.8])
>>> average_precision_score(y_true, y_scores)
0.83
>>> y_true = np.array([0, 0, 1, 1, 2, 2])
>>> y_scores = np.array([
...     [0.7, 0.2, 0.1],
...     [0.4, 0.3, 0.3],
...     [0.1, 0.8, 0.1],
...     [0.2, 0.3, 0.5],
...     [0.4, 0.4, 0.2],
...     [0.1, 0.2, 0.7],
... ])
>>> average_precision_score(y_true, y_scores)
0.77

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

Точность–полнота

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.metrics.average_precision_score.html

Spec-Zone.ru

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