Настроенный классификатор порога 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
-
Обновлённый объект.
-
Примеры из галереи
© 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