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')[source]
-
Вычисление точности, полноты, F-меры и поддержки для каждого класса.
Точность — это отношение
tp / (tp + fp), гдеtp— количество истинно положительных, аfp— количество ложноположительных. Интуитивно точность — это способность классификатора не относить отрицательный образец к положительному.Полнота — это отношение
tp / (tp + fn), гдеtp— количество истинно положительных, аfn— количество ложноотрицательных. Интуитивно полнота — это способность классификатора находить все положительные образцы.F-мера с весом β может быть интерпретирована как взвешенное гармоническое среднее значение точности и полноты, где F-мера достигает наилучшего значения 1 и наихудшего 0.
F-мера с весом β учитывает полноту больше, чем точность, с коэффициентом
beta.beta == 1.0означает, что полнота и точность имеют одинаковую важность.Поддержка — это количество вхождений каждого класса в
y_true.Поддержка за пределами термина:
binaryдостигается путем обработки многоклассовой и многометковой данных как коллекции бинарных задач, по одной на каждый метку. Для бинарного случая, установкаaverage='binary'вернёт метрики дляpos_label. Еслиaverageне'binary', тоpos_labelигнорируется и вычисляются метрики для обоих классов, затем усредняются или оба возвращаются (приaverage=None). Аналогично, для многоклассовых и многометковых целей, метрики для всехlabelsвозвращаются или усредняются в зависимости от параметраaverage. Используйтеlabelsдля указания набора меток для расчета метрик.Подробнее см. в Руководстве пользователя.
- Parameters:
-
- y_true1d массив-подобный объект или массив/разреженная матрица индикаторов меток
-
Значения целевых переменных (правильные) истинного значения.
- y_pred1d массив-подобный объект или массив/разреженная матрица индикаторов меток
-
Оценённые целевые значения, возвращённые классификатором.
- betafloat, по умолчанию=1.0
-
Сила полноты по отношению к точности в F-мере.
- labelsмассив-подобный объект, по умолчанию=None
-
Множество меток для включения, когда
average != 'binary', и их порядок, еслиaverage is None. Метки, отсутствующие в данных, могут быть исключены, например, в многоклассовой классификации для исключения «отрицательного класса». Метки, отсутствующие в данных, могут быть включены и им будет «присвоено» 0 образцов. Для многометковых целей, метки — это индексы столбцов. По умолчанию используются все метки в данных в отсортированном порядке.Изменено в версии 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опция была добавлена.
- Returns:
-
- precisionfloat (если average не None) или массив float, форма = [n_unique_labels]
-
Значение точности.
- recallfloat (если average не None) или массив float, форма = [n_unique_labels]
-
Значение полноты.
- fbeta_scorefloat (если average не None) или массив float, форма = [n_unique_labels]
-
Значение F-меры.
- supportNone (если average не None) или массив int, форма = [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.22..., 0.33..., 0.26..., 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.22..., 0.33..., 0.26..., 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–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.metrics.precision_recall_fscore_support.html