Spec-Zone.ru › scikit-learn

f1_score

sklearn.metrics.f1_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')[source]

Вычисление метрики F1, также известной как сбалансированная мера F или мера F.

Метрика F1 может быть интерпретирована как гармоническое среднее точности и полноты, где значение метрики F1 достигает наилучшего значения 1 и наихудшего 0. Вклад точности и полноты в метрику F1 одинаков. Формула для метрики F1:

\[\text{F1} = \frac{2 * \text{TP}}{2 * \text{TP} + \text{FP} + \text{FN}}\]

Где \(\text{TP}\) - количество истинных положительных ответов, \(\text{FN}\) - количество ложных отрицательных ответов, и \(\text{FP}\) - количество ложных положительных ответов. По умолчанию F1 вычисляется как 0.0, если нет истинных положительных ответов, ложных отрицательных ответов или ложных положительных ответов.

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

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

Параметры:
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':

Вычисление метрик для каждого класса и вычисление их среднего взвешенного по поддержке (количеству истинных экземпляров для каждого класса). Это изменяет «макро» для учета дисбаланса классов; это может привести к значению 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 опция была добавлена.

Возвращаемые значения:
f1_scorefloat или массив float, форма = [n_unique_labels]

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

См. также

fbeta_score

Вычисление метрики F-бета.

precision_recall_fscore_support

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

jaccard_score

Вычисление коэффициента схожести Якобсена.

multilabel_confusion_matrix

Вычисление матрицы неточностей для каждого класса или образца.

Примечания

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

Ссылки

[1]

Статья в Википедии о метрике F1.

Примеры

>>> import numpy as np
>>> from sklearn.metrics import f1_score
>>> y_true = [0, 1, 2, 0, 1, 2]
>>> y_pred = [0, 2, 1, 0, 0, 1]
>>> f1_score(y_true, y_pred, average='macro')
0.26...
>>> f1_score(y_true, y_pred, average='micro')
0.33...
>>> f1_score(y_true, y_pred, average='weighted')
0.26...
>>> f1_score(y_true, y_pred, average=None)
array([0.8, 0. , 0. ])
>>> # binary classification
>>> y_true_empty = [0, 0, 0, 0, 0, 0]
>>> y_pred_empty = [0, 0, 0, 0, 0, 0]
>>> f1_score(y_true_empty, y_pred_empty)
0.0...
>>> f1_score(y_true_empty, y_pred_empty, zero_division=1.0)
1.0...
>>> f1_score(y_true_empty, y_pred_empty, zero_division=np.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]]
>>> f1_score(y_true, y_pred, average=None)
array([0.66666667, 1.        , 0.66666667])

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

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

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

Полусупервизированная классификация на наборе данных текстов

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

Spec-Zone.ru

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