TunedThresholdClassifierCV#

класс sklearn.model_selection.TunedThresholdClassifierCV(estimator, *, оценка='balanced_accuracy', response_method='auto', пороги=100, cv=None, refit=True, n_jobs=None, random_state=None, store_cv_results=False)[источник]#

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

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

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

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

Параметры:
estimatorэкземпляр estimator

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

оценкаstr или callable, по умолчанию="balanced_accuracy"

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

response_method{“auto”, “decision_function”, “predict_proba”}, по умолчанию=”auto”

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

  • if "auto", он попытается вызвать для каждого классификатора, "predict_proba" или "decision_function" в таком порядке.

  • в противном случае, один из "predict_proba" или "decision_function". Если метод не реализован классификатором, он вызовет ошибку.

порогиint или array-like, по умолчанию=100

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

cvint, float, генератор перекрестной проверки, итерируемый или "prefit", default=None

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

  • None, чтобы использовать стандартную 5-кратную стратифицированную K-кратную перекрестную проверку;

  • Целое число для указания количества фолдов в стратифицированной k-кратной перекрестной проверке;

  • Число с плавающей точкой для указания одного перемешанного разбиения. Число с плавающей точкой должно быть в (0, 1) и представлять размер валидационного набора;

  • Объект, который будет использоваться как генератор перекрёстной проверки;

  • Итерируемый объект, возвращающий разделения на обучающую и тестовую выборки;

  • "prefit", чтобы обойти перекрестную проверку.

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

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

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

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

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

) для обеспечения согласованного поведения вместо использования refit=False при кросс-валидации с более чем одним разбиением вызовет ошибку. Аналогично, refit=True в сочетании с cv="prefit" вызовет ошибку.

n_jobsint, default=None

Количество задач для параллельного выполнения. Когда cv представляет стратегию перекрестной проверки, подгонка и оценка на каждом разделе данных выполняются параллельно. None означает 1, если только не в joblib.parallel_backend контекст. -1 означает использование всех процессоров. См. Глоссарий для получения дополнительной информации.

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

Управляет случайностью перекрестной проверки, когда cv , это предсказание находится в том же целевом пространстве, которое использовалось при обучении (например, одно из {'красный', 'янтарный', 'зелёный'}, если Глоссарий.

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

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

Атрибуты:
estimator_экземпляр estimator

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

best_threshold_float

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

best_score_float или None

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

cv_results_dict или None

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

classes_ndarray формы (n_classes,)

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

n_features_in_int

Количество признаков, замеченных во время 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
decision_function(X)[источник]#

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

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

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

Возвращает:
решенияndarray формы (n_samples,)

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

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

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

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

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

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

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

**paramsdict

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

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

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

6332()[источник]#

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

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

Возвращает:
маршрутизацияMetadataRouter

A MetadataRouter Инкапсуляция информации о маршрутизации.

get_params(глубокий=True)[источник]#

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

Параметры:
глубокийbool, по умолчанию=True

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

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

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

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

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

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

Образцы, как принято в estimator.predict.

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

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

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

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

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

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

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

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

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

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

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

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

Возвращает:
вероятностиndarray формы (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

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

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

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

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

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

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

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

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

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

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

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.

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

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