Spec-Zone.ru › scikit-learn

Настроенный классификатор порога CV

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)[source]

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

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

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

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

Параметры:
estimatorэкземпляр классификатора

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

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

Целевая метрика для оптимизации. Может быть одним из:

  • строка, связанная с функцией оценки для двоичной классификации (см. Параметр scoring: определение правил оценки модели);
  • вызываемый объект оценщика, созданный с помощью make_scorer;
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, чтобы использовать по умолчанию 5-кратную стратифицированную перекрёстную проверку K-fold;
  • Целое число, для указания количества слоёв в stratifed k-fold;
  • Число с плавающей точкой, для указания одного разделения с перемешиванием. Число с плавающей точкой должно быть в (0, 1) и представлять размер набора проверки;
  • Объект, используемый в качестве генератора перекрёстной проверки;
  • Итерируемый объект, возвращающий тренировочные и тестовые разделения;
  • "prefit", чтобы обойти перекрёстную проверку.

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

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

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

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

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

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

n_jobsint, по умолчанию=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_целое число

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

feature_names_in_массив ndarray формы (n_features_in_,)

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

См. также

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
propertyclasses_

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

decision_function(X)[source]

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

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

Вектора обучения, где n_samples — количество образцов, а n_features — количество признаков.

Возвращает:
decisionsмассив ndarray формы (n_samples,)

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

fit(X, y, **params)[source]

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

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Данные обучения.

yarray-like of shape (n_samples,)

Значения целевой переменной.

**paramsdict

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

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

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

get_metadata_routing()[source]

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

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

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

MetadataRouter описывающая маршрутизацию.

get_params(deep=True)[source]

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

Параметры:
deepbool, default=True

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

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

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

predict(X)[source]

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

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Примеры, как ожидается estimator.predict.

Возвращает:
class_labelsndarray of shape (n_samples,)

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

predict_log_proba(X)[source]

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

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

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

Возвращает:
log_probabilitiesndarray of shape (n_samples, n_classes)

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

predict_proba(X)[source]

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

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

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

Возвращает:
probabilitiesndarray of shape (n_samples, n_classes)

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

score(X, y, sample_weight=None)[source]

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

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

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

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

yarray-like of shape (n_samples,) or (n_samples, n_outputs)

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

sample_weightarray-like of shape (n_samples,), default=None

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

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

Средняя точность self.predict(X) по отношению к y.

set_params(**params)[source]

Установить параметры этого оценщика.

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

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

Параметры оценщика.

Возвращает:
selfestimator instance

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

set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') → TunedThresholdClassifierCV[source]

Запрос метаданных, передаваемых методу score.

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

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

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

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

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

Примечание

Этот метод актуален только если этот оценщик используется как под-оценщик мета-оценщика, например, внутри Pipeline. В противном случае он не оказывает никакого влияния.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

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

Returns:
selfobject

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

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

Основные моменты выпуска scikit-learn 1.5

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

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

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

Spec-Zone.ru

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