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')[исходный код]
-
Вычисляет точность, полноту, F-меру и поддержку для каждого класса.
Точность — это отношение
tp / (tp + fp), гдеtp— число истинно положительных результатов, аfp— число ложно положительных результатов. Интуитивно точность характеризует способность классификатора не помечать отрицательный образец как положительный.Полнота — это отношение
tp / (tp + fn), гдеtp— число истинно положительных результатов, аfn— число ложно отрицательных результатов. Интуитивно полнота характеризует способность классификатора находить все положительные образцы.Оценку F-бета можно интерпретировать как взвешенное гармоническое среднее точности и полноты; наилучшее значение оценки F-бета равно 1, а наихудшее — 0.
Оценка F-бета придает полноте больший вес, чем точности, в
betaраз.beta == 1.0означает, что полнота и точность одинаково важны.Поддержка — это число вхождений каждого класса в
y_true.Поддержка для целей, выходящих за рамки бинарных, достигается путем обработки данных многоклассового и многометочного типов как набора бинарных задач — по одной для каждой метки. Для бинарного случая установка
average='binary'возвращает метрики дляpos_label. Еслиaverageне равно'binary',pos_labelигнорируется, метрики для обоих классов вычисляются, а затем усредняются или возвращаются обе (если заданоaverage=None). Аналогично, для целей многоклассового и многометочного типов метрики для всехlabelsлибо возвращаются, либо усредняются в зависимости от параметраaverage. Используйтеlabels, чтобы указать набор меток, для которых нужно вычислить метрики.Подробнее см. в Руководстве пользователя.
- Параметры:
-
- y_trueмассивоподобный объект размерности 1 или массив индикаторов меток / разреженная матрица
-
Истинные (корректные) значения целевой переменной. Разреженная матрица поддерживается только для целей типа многометочная.
- y_predмассивоподобный объект размерности 1 или массив индикаторов меток / разреженная матрица
-
Предсказанные цели, возвращенные классификатором. Разреженная матрица поддерживается только для целей типа многометочная.
- betaчисло с плавающей точкой, по умолчанию=1.0
-
Степень влияния полноты относительно точности в F-мере.
- 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).
-
- 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.
- Возвращает:
-
- precisionчисло с плавающей точкой (если average не равно None) или массив чисел с плавающей точкой, форма = [n_unique_labels]
-
Оценка точности.
- recallчисло с плавающей точкой (если average не равно None) или массив чисел с плавающей точкой, форма = [n_unique_labels]
-
Оценка полноты.
- fbeta_scoreчисло с плавающей точкой (если average не равно None) или массив чисел с плавающей точкой, форма = [n_unique_labels]
-
Оценка F-бета.
- supportNone (если average не равно None) или массив целых чисел, форма = [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.Ссылки
Примеры
>>> 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.222, 0.333, 0.267, 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.222, 0.333, 0.267, 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–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.metrics.precision_recall_fscore_support.html