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')[source]

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

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

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

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

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

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

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

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

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

Значения целевых переменных (правильные) истинного значения.

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

Оценённые целевые значения, возвращённые классификатором.

betafloat, по умолчанию=1.0

Сила полноты по отношению к точности в F-мере.

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

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

Изменено в версии 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 опция была добавлена.

Returns:
precisionfloat (если average не None) или массив float, форма = [n_unique_labels]

Значение точности.

recallfloat (если average не None) или массив float, форма = [n_unique_labels]

Значение полноты.

fbeta_scorefloat (если average не None) или массив float, форма = [n_unique_labels]

Значение F-меры.

supportNone (если average не None) или массив int, форма = [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]

Discriminative Methods for Multi-labeled Classification Advances in Knowledge Discovery and Data Mining (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.22..., 0.33..., 0.26..., 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.22..., 0.33..., 0.26..., 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–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.metrics.precision_recall_fscore_support.html

Spec-Zone.ru

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