Spec-Zone.ru › scikit-learn

TunedThresholdClassifierCV

classsklearn.model_selection.TunedThresholdClassifierCV(estimator, *, scoring='balanced_accuracy', response_method='auto', thresholds=100, cv=None, refit=True, n_jobs=None, random_state=None, store_cv_results=False)[источник]

Классификатор, который настраивает порог принятия решения с помощью кросс-валидации.

Этот оцениватель настраивает порог принятия решения (точку отсечения), используемый для преобразования апостериорных оценок вероятностей (т. е. результата predict_proba) или оценок принятия решения (т. е. результата decision_function) в метку класса. Настройка выполняется путём оптимизации бинарной метрики, которая при необходимости может быть ограничена другой метрикой.

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

Добавлено в версии 1.5.

Параметры:
estimatorэкземпляр оценивателя

Классификатор, обученный или нет, для которого требуется оптимизировать порог принятия решения, используемый при predict.

scoringстрока или вызываемый объект, по умолчанию “balanced_accuracy”

Целевая метрика для оптимизации. Может быть одним из следующих значений:

  • str: строка, соответствующая функции оценки для бинарной классификации; варианты см. в разделе Строковые имена оценивателей.
  • callable: вызываемый объект-оцениватель (например, функция) с сигнатурой scorer(estimator, X, y). Подробности см. в разделе Вызываемые оцениватели.
response_method{“auto”, “decision_function”, “predict_proba”}, по умолчанию “auto”

Методы классификатора estimator, соответствующие функции принятия решения, для которой требуется найти порог. Возможны следующие значения:

  • если "auto", для каждого классификатора будет предпринята попытка вызвать "predict_proba" или "decision_function" именно в таком порядке.
  • в противном случае — одно из значений "predict_proba" или "decision_function". Если классификатор не реализует этот метод, будет вызвана ошибка.
thresholdsцелое число или массивоподобный объект, по умолчанию 100

Количество порогов принятия решения, используемых при дискретизации выходных данных классификатора method. Передайте массивоподобный объект, чтобы вручную задать используемые пороги.

cvцелое число, число с плавающей точкой, генератор кросс-валидации, итерируемый объект или “prefit”, по умолчанию=None

Определяет стратегию разбиения на обучающие и проверочные выборки для обучения классификатора. Возможные значения cv:

  • None, чтобы использовать стратифицированную кросс-валидацию K-fold с 5 фолдами по умолчанию;
  • целое число, задающее количество фолдов в стратифицированном k-fold;
  • число с плавающей точкой, задающее одно разбиение с перемешиванием. Это число должно находиться в диапазоне (0, 1) и обозначать размер проверочной выборки;
  • объект, используемый в качестве генератора кросс-валидации;
  • итерируемый объект, возвращающий разбиения на обучающую и проверочную выборки;
  • "prefit", чтобы пропустить кросс-валидацию.

Сведения о различных стратегиях кросс-валидации, доступных здесь, см. в Руководстве пользователя.

Предупреждение

Использование cv="prefit" и передача одного и того же набора данных для обучения estimator и настройки точки отсечения может привести к нежелательному переобучению. Пример см. в разделе Особенности повторного обучения модели и кросс-валидации.

Этот параметр следует использовать, только если набор данных для обучения estimator отличается от набора, используемого для настройки точки отсечения (при вызове TunedThresholdClassifierCV.fit).

refitbool, по умолчанию=True

Следует ли повторно обучить классификатор на всём обучающем наборе после нахождения порога принятия решения. Обратите внимание: принудительная установка refit=False при кросс-валидации с более чем одним разбиением вызовет ошибку. Аналогично, сочетание refit=True и cv="prefit" вызовет ошибку.

n_jobsцелое число, по умолчанию=None

Количество задач, выполняемых параллельно. Если cv задаёт стратегию кросс-валидации, обучение и оценка для каждого разбиения данных выполняются параллельно. Значение None означает 1, если только оно не задано в контексте joblib.parallel_backend. Значение -1 означает использование всех процессоров. Подробнее см. в глоссарии.

random_stateцелое число, экземпляр RandomState или None, по умолчанию=None

Управляет случайностью кросс-валидации, если cv является числом с плавающей точкой. См. глоссарий.

store_cv_resultsbool, по умолчанию=False

Сохранять ли все оценки и пороги, вычисленные в процессе кросс-валидации.

Атрибуты:
estimator_экземпляр оценивателя

Обученный классификатор, используемый при предсказании.

best_threshold_число с плавающей точкой

Новый порог принятия решения.

best_score_число с плавающей точкой или None

Оптимальное значение целевой метрики, вычисленное при best_threshold_.

cv_results_словарь или None

Словарь с оценками и порогами, вычисленными в процессе кросс-валидации. Существует только при store_cv_results=True. Ключи — "thresholds" и "scores".

classes_ndarray формы (n_classes,)

Метки классов.

n_features_in_целое число

Количество признаков, встреченных во время обучения. Определён только в том случае, если базовый оцениватель предоставляет такой атрибут после обучения.

feature_names_in_ndarray формы (n_features_in_,)

Имена признаков, встреченных во время обучения. Определён только в том случае, если базовый оцениватель предоставляет такой атрибут после обучения.

См. также

sklearn.model_selection.FixedThresholdClassifier

Классификатор, использующий постоянный порог.

sklearn.calibration.CalibratedClassifierCV

Оцениватель, калибрующий вероятности.

Примеры

>>> from sklearn.datasets import make_classification
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.metrics import classification_report
>>> from sklearn.model_selection import TunedThresholdClassifierCV, train_test_split
>>> X, y = make_classification(
...     n_samples=1_000, weights=[0.9, 0.1], class_sep=0.8, random_state=42
... )
>>> X_train, X_test, y_train, y_test = train_test_split(
...     X, y, stratify=y, random_state=42
... )
>>> classifier = RandomForestClassifier(random_state=0).fit(X_train, y_train)
>>> print(classification_report(y_test, classifier.predict(X_test)))
              precision    recall  f1-score   support

           0       0.94      0.99      0.96       224
           1       0.80      0.46      0.59        26

    accuracy                           0.93       250
   macro avg       0.87      0.72      0.77       250
weighted avg       0.93      0.93      0.92       250

>>> classifier_tuned = TunedThresholdClassifierCV(
...     classifier, scoring="balanced_accuracy"
... ).fit(X_train, y_train)
>>> print(
...     f"Cut-off point found at {classifier_tuned.best_threshold_:.3f}"
... )
Cut-off point found at 0.342
>>> print(classification_report(y_test, classifier_tuned.predict(X_test)))
              precision    recall  f1-score   support

           0       0.96      0.95      0.96       224
           1       0.61      0.65      0.63        26

    accuracy                           0.92       250
   macro avg       0.78      0.80      0.79       250
weighted avg       0.92      0.92      0.92       250
decision_function(X)[источник]

Функция принятия решения для выборок из X с использованием обученного оценивателя.

Параметры:
X{array-like, разреженная матрица} формы (n_samples, n_features)

Обучающие векторы, где n_samples — количество выборок, а n_features — количество признаков.

Возвращает:
decisionsndarray формы (n_samples,)

Функция принятия решения, вычисленная обученным оценивателем.

fit(X, y, **params)[источник]

Обучить классификатор.

Параметры:
X{array-like, разреженная матрица} формы (n_samples, n_features)

Обучающие данные.

yarray-like формы (n_samples,)

Целевые значения.

**paramsdict

Параметры, передаваемые методу fit базового классификатора.

Возвращает:
selfобъект

Возвращает экземпляр self.

get_metadata_routing()[источник]

Получить настройки маршрутизации метаданных этого объекта.

О том, как работает механизм маршрутизации, см. в Руководстве пользователя.

Возвращает:
routingMetadataRouter

Объект MetadataRouter, содержащий сведения о маршрутизации.

get_params(deep=True)[источник]

Получить параметры этого оценивателя.

Параметры:
deepbool, по умолчанию=True

Если значение True, будут возвращены параметры этого оценивателя и содержащихся в нём подобъектов, являющихся оценивателями.

Возвращает:
paramsdict

Имена параметров, сопоставленные их значениям.

predict(X)[источник]

Предсказать целевое значение для новых выборок.

Параметры:
X{array-like, разреженная матрица} формы (n_samples, n_features)

Выборки в формате, принимаемом estimator.predict.

Возвращает:
class_labelsndarray формы (n_samples,)

Предсказанный класс.

predict_log_proba(X)[источник]

Предсказать логарифмы вероятностей классов для X с использованием обученного оценивателя.

Параметры:
X{array-like, разреженная матрица} формы (n_samples, n_features)

Обучающие векторы, где n_samples — количество выборок, а n_features — количество признаков.

Возвращает:
log_probabilitiesndarray формы (n_samples, n_classes)

Логарифмы вероятностей классов для входных выборок.

predict_proba(X)[источник]

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

Параметры:
X{array-like, разреженная матрица} формы (n_samples, n_features)

Обучающие векторы, где n_samples — количество выборок, а n_features — количество признаков.

Возвращает:
probabilitiesndarray формы (n_samples, n_classes)

Вероятности классов для входных выборок.

score(X, y, sample_weight=None)[источник]

Возвращает точность на предоставленных данных и метках.

В многометочной классификации это точность подмножества — строгая метрика, поскольку для каждой выборки требуется правильно предсказать все метки.

Параметры:
Xarray-like формы (n_samples, n_features)

Тестовые выборки.

yarray-like формы (n_samples,) или (n_samples, n_outputs)

Истинные метки для X.

sample_weightarray-like формы (n_samples,), по умолчанию=None

Веса выборок.

Возвращает:
scoreчисло с плавающей точкой

Средняя точность self.predict(X) относительно y.

set_params(**params)[источник]

Задать параметры этого оценивателя.

Метод работает как с простыми оценивателями, так и с вложенными объектами (например, Pipeline). У последних параметры имеют вид <component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.

Параметры:
**paramsdict

Параметры оценивателя.

Возвращает:
selfэкземпляр оценивателя

Экземпляр оценивателя.

set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') → TunedThresholdClassifierCV[источник]

Настроить, следует ли запрашивать передачу метаданных в метод score.

Обратите внимание: этот метод актуален только тогда, когда данный оцениватель используется как подоцениватель в составе мета-оценивателя и включена маршрутизация метаданных с помощью enable_metadata_routing=True (см. sklearn.set_config). О том, как работает механизм маршрутизации, см. в Руководстве пользователя.

Для каждого параметра доступны следующие варианты:

  • True: метаданные запрашиваются и передаются в score, если они предоставлены. Если метаданные не предоставлены, запрос игнорируется.
  • False: метаданные не запрашиваются, и мета-оцениватель не передаёт их в score.
  • None: метаданные не запрашиваются; если пользователь их предоставляет, мета-оцениватель вызовет ошибку.
  • str: метаданные передаются мета-оценивателю под указанным псевдонимом вместо исходного имени.

Значение по умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняет существующий запрос. Это позволяет изменить запрос для одних параметров, не меняя его для остальных.

Добавлено в версии 1.3.

Параметры:
sample_weightstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра sample_weight в score.

Возвращает:
selfобъект

Обновлённый объект.

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

Настройка порога принятия решения после обучения для обучения с учётом стоимости

Настройка точки отсечения функции принятия решения после обучения

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

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

Spec-Zone.ru

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