Spec-Zone.ru › scikit-learn

precision_score

sklearn.metrics.precision_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')[исходный код]

Вычислить точность.

Точность — это отношение tp / (tp + fp), где tp — число истинно положительных результатов, а fp — число ложноположительных результатов. Интуитивно точность характеризует способность классификатора не присваивать положительную метку отрицательному образцу.

Наилучшее значение — 1, наихудшее — 0.

Поддержка целей, выходящих за рамки бинарных, обеспечивается за счёт обработки данных многоклассовой и многометочной классификации как набора бинарных задач — по одной для каждой метки. Для бинарного случая значение average='binary' возвращает точность для pos_label. Если average не равно 'binary', параметр pos_label игнорируется, вычисляется точность для обоих классов, а затем результаты усредняются или возвращаются оба значения (если задано average=None). Аналогично, для целей многоклассовой и многометочной классификации точность для всех labels либо возвращается, либо усредняется в зависимости от параметра average. Используйте labels, чтобы указать набор меток, для которых нужно вычислить точность.

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

Параметры:
y_trueодномерный массивоподобный объект или массив-индикатор меток / разреженная матрица

Истинные (правильные) значения целевых переменных. Разреженная матрица поддерживается только для целей типа многометочной классификации.

y_predодномерный массивоподобный объект или массив-индикатор меток / разреженная матрица

Оценённые целевые значения, возвращённые классификатором. Разреженная матрица поддерживается только для целей типа многометочной классификации.

labelsмассивоподобный объект, по умолчанию=None

Набор меток, включаемых при average != 'binary', и их порядок, если average is None. Метки, присутствующие в данных, можно исключить, например, чтобы исключить «отрицательный класс» при многоклассовой классификации. Метки, отсутствующие в данных, можно включить; им будет «назначено» 0 образцов. Для многометочных целей метки представляют собой индексы столбцов. По умолчанию используются все метки из y_true и y_pred в отсортированном порядке.

Изменено в версии 0.17: Параметр labels улучшен для задачи многоклассовой классификации.

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

Класс, для которого нужно вывести результат, если average='binary' и данные являются бинарными; в противном случае этот параметр игнорируется. Для многоклассовых или многометочных целей задайте labels=[pos_label] и average != 'binary', чтобы вывести метрики только для одной метки.

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

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

'binary':

Выводить результаты только для класса, указанного параметром pos_label. Применимо только в том случае, если цели (y_{true,pred}) являются бинарными.

'micro':

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

'macro':

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

'weighted':

Вычислять метрики для каждой метки и находить их среднее, взвешенное по поддержке (числу истинных экземпляров для каждой метки). Этот способ изменяет «macro», учитывая дисбаланс меток; в результате оценка F может оказаться за пределами диапазона между точностью и полнотой.

'samples':

Вычислять метрики для каждого экземпляра и находить их среднее (имеет смысл только для многометочной классификации, где этот результат отличается от accuracy_score).

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

Веса образцов.

zero_division{“warn”, 0.0, 1.0, np.nan}, по умолчанию=”warn”

Задаёт значение, возвращаемое при делении на ноль.

Примечания:

  • Если задано значение “warn”, возвращается 0 и дополнительно выдаётся предупреждение.
  • Если задано np.nan, такие значения исключаются из среднего.

Добавлено в версии 1.3: Добавлен параметр np.nan.

Возвращает:
precisionfloat (если average не равен None) или массив float формы (n_unique_labels,)

Точность положительного класса при бинарной классификации или взвешенное среднее точности каждого класса для многоклассовой задачи.

См. также

precision_recall_fscore_support

Вычислить точность, полноту, F-меру и поддержку для каждого класса.

recall_score

Вычислить отношение tp / (tp + fn), где tp — число истинно положительных результатов, а fn — число ложноотрицательных результатов.

PrecisionRecallDisplay.from_estimator

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

PrecisionRecallDisplay.from_predictions

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

multilabel_confusion_matrix

Вычислить матрицу ошибок для каждого класса или образца.

Примечания

Если true positive + false positive == 0, precision возвращает 0 и выдаёт UndefinedMetricWarning. Это поведение можно изменить с помощью zero_division.

Примеры

>>> import numpy as np
>>> from sklearn.metrics import precision_score
>>> y_true = [0, 1, 2, 0, 1, 2]
>>> y_pred = [0, 2, 1, 0, 0, 1]
>>> precision_score(y_true, y_pred, average='macro')
0.22
>>> precision_score(y_true, y_pred, average='micro')
0.33
>>> precision_score(y_true, y_pred, average='weighted')
0.22
>>> precision_score(y_true, y_pred, average=None)
array([0.66, 0.        , 0.        ])
>>> y_pred = [0, 0, 0, 0, 0, 0]
>>> precision_score(y_true, y_pred, average=None)
array([0.33, 0.        , 0.        ])
>>> precision_score(y_true, y_pred, average=None, zero_division=1)
array([0.33, 1.        , 1.        ])
>>> precision_score(y_true, y_pred, average=None, zero_division=np.nan)
array([0.33,        nan,        nan])
>>> # multilabel classification
>>> y_true = [[0, 0, 0], [1, 1, 1], [0, 1, 1]]
>>> y_pred = [[0, 0, 0], [1, 1, 1], [1, 1, 0]]
>>> precision_score(y_true, y_pred, average=None)
array([0.5, 1. , 1. ])

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

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

Настройка порога принятия решения для обучения с учётом стоимости

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

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

Spec-Zone.ru

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