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