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')[источник]

Вычисляет оценку F1, также известную как сбалансированная 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_true1d array-like или массив-индикатор меток / разреженная матрица

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

y_pred1d array-like или массив-индикатор меток / разреженная матрица

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

labelsarray-like, по умолчанию=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_weightarray-like формы (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.267
>>> f1_score(y_true, y_pred, average='micro')
0.33
>>> f1_score(y_true, y_pred, average='weighted')
0.267
>>> 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])

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

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

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

Основные нововведения scikit-learn 1.9

Классификация текстового набора данных с частичным привлечением учителя

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

Spec-Zone.ru

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