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.
Примеры
>>> 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