Spec-Zone.ru › scikit-learn

precision_recall_fscore_support

sklearn.metrics.precision_recall_fscore_support(y_true, y_pred, *, beta=1.0, labels=None, pos_label=1, average=None, warn_for=('precision', 'recall', 'f-score'), sample_weight=None, zero_division='warn')[исходный код]

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

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

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

Оценку F-бета можно интерпретировать как взвешенное гармоническое среднее точности и полноты; наилучшее значение оценки F-бета равно 1, а наихудшее — 0.

Оценка F-бета придает полноте больший вес, чем точности, в beta раз. beta == 1.0 означает, что полнота и точность одинаково важны.

Поддержка — это число вхождений каждого класса в y_true.

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

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

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

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

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

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

betaчисло с плавающей точкой, по умолчанию=1.0

Степень влияния полноты относительно точности в F-мере.

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

warn_forсписок, кортеж или множество; используется внутри

Определяет, какие предупреждения будут выдаваться, если эта функция используется для возврата только одной из метрик.

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

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

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

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

  • полнота: если нет положительных меток
  • точность: если нет положительных предсказаний
  • F-мера: в обоих случаях

Примечания:

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

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

Возвращает:
precisionчисло с плавающей точкой (если average не равно None) или массив чисел с плавающей точкой, форма = [n_unique_labels]

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

recallчисло с плавающей точкой (если average не равно None) или массив чисел с плавающей точкой, форма = [n_unique_labels]

Оценка полноты.

fbeta_scoreчисло с плавающей точкой (если average не равно None) или массив чисел с плавающей точкой, форма = [n_unique_labels]

Оценка F-бета.

supportNone (если average не равно None) или массив целых чисел, форма = [n_unique_labels]

Число вхождений каждой метки в y_true.

Примечания

Если true positive + false positive == 0, точность не определена. Если true positive + false negative == 0, полнота не определена. Если true positive + false negative + false positive == 0, F-мера не определена. В таких случаях по умолчанию метрика принимает значение 0 и выдается UndefinedMetricWarning. Это поведение можно изменить с помощью zero_division.

Ссылки

[1]

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

[2]

Статья в Википедии об оценке F1.

[3]

Дискриминативные методы многометочной классификации. Достижения в области обнаружения знаний и интеллектуального анализа данных (2004), стр. 22–30, Шантану Годболе, Сунита Сараваги.

Примеры

>>> import numpy as np
>>> from sklearn.metrics import precision_recall_fscore_support
>>> y_true = np.array(['cat', 'dog', 'pig', 'cat', 'dog', 'pig'])
>>> y_pred = np.array(['cat', 'pig', 'dog', 'cat', 'cat', 'dog'])
>>> precision_recall_fscore_support(y_true, y_pred, average='macro')
(0.222, 0.333, 0.267, None)
>>> precision_recall_fscore_support(y_true, y_pred, average='micro')
(0.33, 0.33, 0.33, None)
>>> precision_recall_fscore_support(y_true, y_pred, average='weighted')
(0.222, 0.333, 0.267, None)

Можно вычислить точность, полноту, оценки F1 и поддержку отдельно для каждой метки, а не усреднять их:

>>> precision_recall_fscore_support(y_true, y_pred, average=None,
... labels=['pig', 'dog', 'cat'])
(array([0.        , 0.        , 0.66]),
 array([0., 0., 1.]), array([0. , 0. , 0.8]),
 array([2, 2, 2]))

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

Spec-Zone.ru

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