Spec-Zone.ru › scikit-learn

fbeta_score

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

Вычисляет F-бета-меру.

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

Параметр beta задаёт отношение важности полноты к важности точности. Значение beta > 1 придаёт больший вес полноте, тогда как beta < 1 отдаёт предпочтение точности. Например, beta = 2 делает полноту вдвое важнее точности, а beta = 0.5 — наоборот. При стремлении к бесконечности beta -> +inf учитывает только полноту, а beta -> 0 — только точность.

Формула F-бета-меры:

\[F_\beta = \frac{(1 + \beta^2) \text{tp}} {(1 + \beta^2) \text{tp} + \text{fp} + \beta^2 \text{fn}}\]

Здесь \(\text{tp}\) — число истинно положительных результатов, \(\text{fp}\) — число ложно положительных результатов, а \(\text{fn}\) — число ложно отрицательных результатов.

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

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

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

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

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

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

betafloat

Определяет вес полноты в комбинированной оценке.

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.

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

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

См. также

precision_recall_fscore_support

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

multilabel_confusion_matrix

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

Примечания

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

F-бета-мера не реализована как именованный оценщик, который можно напрямую передать параметру scoring инструментов перекрёстной проверки: её необходимо обернуть с помощью make_scorer, чтобы указать значение параметра beta. Подробности см. в примерах.

Ссылки

[1]

R. Baeza-Yates и B. Ribeiro-Neto (2011). Modern Information Retrieval. Addison Wesley, стр. 327–328.

[2]

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

Примеры

>>> import numpy as np
>>> from sklearn.metrics import fbeta_score
>>> y_true = [0, 1, 2, 0, 1, 2]
>>> y_pred = [0, 2, 1, 0, 0, 1]
>>> fbeta_score(y_true, y_pred, average='macro', beta=0.5)
0.238
>>> fbeta_score(y_true, y_pred, average='micro', beta=0.5)
0.33
>>> fbeta_score(y_true, y_pred, average='weighted', beta=0.5)
0.238
>>> fbeta_score(y_true, y_pred, average=None, beta=0.5)
array([0.71, 0.        , 0.        ])
>>> y_pred_empty = [0, 0, 0, 0, 0, 0]
>>> fbeta_score(
...     y_true,
...     y_pred_empty,
...     average="macro",
...     zero_division=np.nan,
...     beta=0.5,
... )
0.128

Чтобы использовать fbeta_scorer в качестве оценщика, сначала необходимо создать вызываемый объект-оценщик с помощью make_scorer, передав значение параметра beta.

>>> from sklearn.metrics import fbeta_score, make_scorer
>>> ftwo_scorer = make_scorer(fbeta_score, beta=2)
>>> from sklearn.model_selection import GridSearchCV
>>> from sklearn.svm import LinearSVC
>>> grid = GridSearchCV(
...     LinearSVC(dual="auto"),
...     param_grid={'C': [1, 10]},
...     scoring=ftwo_scorer,
...     cv=5
... )

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

Spec-Zone.ru

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