average_precision_score#

sklearn.metrics.average_precision_score(y_true, y_score, *, среднее='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 оценки, значения больше или равные нулю должны указывать на положительный класс.

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

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

'micro':

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

'macro':

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

'weighted':

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

'samples':

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

Будет игнорироваться, когда y_true является бинарным.

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

Метка положительного класса. Применяется только к бинарным y_true. Для multilabel-indicator y_true, pos_label фиксируется на 1.

sample_weightarray-like формы (n_samples,), по умолчанию=None

Веса выборок.

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

Средняя точность.

Смотрите также

roc_auc_score

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

precision_recall_curve

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

PrecisionRecallDisplay.from_estimator

Построить кривую точности-полноты с использованием оценщика и данных.

PrecisionRecallDisplay.from_predictions

Постройте кривую точности-полноты, используя истинные и предсказанные метки.

Примечания

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

Ссылки

Примеры

>>> 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