HalvingRandomSearchCV#

класс sklearn.model_selection.HalvingRandomSearchCV(estimator, param_distributions, *, n_candidates='exhaust', фактор=3, ресурс='n_samples', max_resources='auto', min_resources='smallest', aggressive_elimination=False, cv=5, оценка=None, refit=True, error_score=nan, return_train_score=True, random_state=None, n_jobs=None, verbose=0)[источник]#

Рандомизированный поиск по гиперпараметрам.

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

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

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

Примечание

Этот оценщик все еще экспериментальный на данный момент: предсказания и API могут измениться без какого-либо цикла устаревания. Чтобы использовать его, вам нужно явно импортировать enable_halving_search_cv:

>>> # explicitly require this experimental feature
>>> from sklearn.experimental import enable_halving_search_cv # noqa
>>> # now you can import normally from model_selection
>>> from sklearn.model_selection import HalvingRandomSearchCV
Параметры:
estimatorобъект оценщика

Предполагается, что это реализует интерфейс оценщика scikit-learn. Любой оценщик должен предоставлять score функция, или scoring должен быть передан.

param_distributionsсловарь или список словарей

Словарь с именами параметров (str) в качестве ключей и распределений или списков параметров для перебора. Распределения должны предоставлять rvs метод для выборки (например, из scipy.stats.distributions). Если задан список, он выбирается равномерно. Если задан список словарей, сначала словарь выбирается равномерно, а затем параметр выбирается с использованием этого словаря, как указано выше.

n_candidates“exhaust” или int, по умолчанию=”exhaust”

Количество кандидатных параметров для выборки на первой итерации. Использование 'exhaust' приведет к выборке достаточного количества кандидатов, чтобы последняя итерация использовала как можно больше ресурсов, на основе min_resources, max_resources и factor. В этом случае, min_resources не может быть 'exhaust'.

факторint или float, по умолчанию=3

Параметр 'halving', который определяет долю кандидатов, выбираемых для каждой последующей итерации. Например, factor=3 означает, что выбирается только одна треть кандидатов.

ресурс'n_samples' или str, по умолчанию='n_samples'

Определяет ресурс, который увеличивается с каждой итерацией. По умолчанию ресурсом является количество образцов. Он также может быть установлен в любой параметр базового оценщика, принимающий положительные целочисленные значения, например 'n_iterations' или 'n_estimators' для градиентного бустинга. В этом случае max_resources не может быть 'auto' и должен быть установлен явно.

max_resourcesint, по умолчанию='auto'

Максимальное количество ресурсов, которое любой кандидат может использовать для данной итерации. По умолчанию это установлено n_samples когда resource='n_samples' (по умолчанию), иначе возникает ошибка.

min_resources{‘exhaust’, ‘smallest’} или int, по умолчанию=’smallest’

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

  • ‘smallest’ — это эвристика, которая устанавливает r0 до небольшого значения:

    • n_splits * 2 когда resource='n_samples' для задачи регрессии

    • n_classes * n_splits * 2 когда resource='n_samples' для задачи классификации

    • 1 когда resource != 'n_samples'

  • 'exhaust' установит r0 такой, что last итерация использует как можно больше ресурсов. А именно, последняя итерация будет использовать наибольшее значение меньшее, чем max_resources которое кратно обоим min_resources и factor. В общем случае, использование 'exhaust' приводит к более точному оценщику, но немного более затратно по времени. 'exhaust' недоступен, когда n_candidates='exhaust'.

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

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

Это актуально только в случаях, когда недостаточно ресурсов для сокращения оставшихся кандидатов до максимум factor после последней итерации. Если True, тогда процесс поиска будет «воспроизводить» первую итерацию столько раз, сколько потребуется, пока количество кандидатов не станет достаточно малым. Это False по умолчанию, что означает, что последняя итерация может оценить больше, чем factor кандидаты. См. Агрессивное исключение кандидатов для получения дополнительной информации.

cvint, генератор перекрестной проверки или итерируемый объект, по умолчанию=5

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

  • целое число, чтобы указать количество фолдов в (Stratified)KFold,

  • CV splitter,

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

Для целочисленных/None входных данных, если оценщик является классификатором и y является либо бинарным, либо многоклассовым, StratifiedKFold используется. Во всех остальных случаях KFold используется. Эти сплиттеры создаются с shuffle=False так что разбиения будут одинаковыми при всех вызовах.

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

Примечание

Из-за особенностей реализации, фолды, созданные cv должно быть одинаковым при множественных вызовах cv.split(). Для встроенных scikit-learn итераторы, этого можно достичь, деактивируя перемешивание (shuffle=False), или установкой cv’s random_state параметр в целое число.

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

Метод оценки для проверки предсказаний на тестовом наборе.

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

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

Когда при выборе лучшего оценщика учитываются факторы, отличные от максимальной оценки, refit может быть установлена в функцию, которая возвращает выбранный best_index_ задан cv_results_. В этом случае, best_estimator_ и best_params_ будет установлен в соответствии с возвращённым best_index_ в то время как best_score_ атрибут будет недоступен.

Переобученный оценщик доступен в best_estimator_ атрибут и позволяет использовать predict непосредственно на этом HalvingRandomSearchCV экземпляр.

См. этот пример для примера использования refit=callable для балансировки сложности модели и кросс-валидированной оценки.

error_score'raise' или числовое

Значение для присвоения оценке, если возникает ошибка при обучении оценщика. Если установлено 'raise', ошибка вызывается. Если задано числовое значение, вызывается FitFailedWarning. Этот параметр не влияет на шаг повторного обучения, который всегда будет вызывать ошибку. По умолчанию np.nan.

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

Если False, cv_results_ атрибут не будет включать оценки обучения. Вычисление оценок обучения используется для получения представления о том, как различные настройки параметров влияют на компромисс переобучения/недообучения. Однако вычисление оценок на обучающем наборе может быть вычислительно затратным и не является строго необходимым для выбора параметров, которые дают наилучшую производительность обобщения.

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

Состояние генератора псевдослучайных чисел, используемое для субдискретизации набора данных когда resources != 'n_samples'. Также используется для случайного равномерного выбора из списков возможных значений вместо распределений scipy.stats. Передайте целое число для воспроизводимого вывода при многократных вызовах функции. См. Глоссарий.

n_jobsint или None, по умолчанию=None

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

verboseint

Управляет подробностью вывода: чем выше, тем больше сообщений.

Атрибуты:
n_resources_список целых чисел

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

n_candidates_список целых чисел

Количество кандидатных параметров, оценённых на каждой итерации.

n_remaining_candidates_int

Количество кандидатных параметров, оставшихся после последней итерации. Оно соответствует ceil(n_candidates[-1] / factor)

max_resources_int

Максимальное количество ресурсов, которое разрешено использовать любому кандидату за одну итерацию. Обратите внимание, что поскольку количество используемых ресурсов на каждой итерации должно быть кратно min_resources_, фактическое количество ресурсов, использованных на последней итерации, может быть меньше, чем max_resources_.

min_resources_int

Количество ресурсов, выделяемых для каждого кандидата на первой итерации.

n_iterations_int

Фактическое количество выполненных итераций. Это равно n_required_iterations_ if aggressive_elimination является True. В противном случае это равно min(n_possible_iterations_, n_required_iterations_).

n_possible_iterations_int

Количество итераций, возможных начиная с min_resources_ ресурсы и без превышения max_resources_.

n_required_iterations_int

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

cv_results_словарь numpy (маскированных) ndarrays

Словарь с ключами в качестве заголовков столбцов и значениями в качестве столбцов, который можно импортировать в pandas DataFrame. Он содержит много информации для анализа результатов поиска. Пожалуйста, обратитесь к Руководство пользователя для подробностей. Пример анализа cv_results_, см. Статистическое сравнение моделей с использованием поиска по сетке.

best_estimator_оценщик или словарь

Оценщик, выбранный поиском, т.е. оценщик, который дал наивысший балл (или наименьшие потери, если указано) на отложенных данных. Недоступно, если refit=False.

best_score_float

Средний перекрёстно-валидированный счёт лучшего оценщика.

best_params_dict

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

best_index_int

Индекс (из cv_results_ массивы), которые соответствуют наилучшей настройке параметров кандидата.

Словарь в search.cv_results_['params'][search.best_index_] даёт настройку параметров для лучшей модели, которая даёт наивысшее среднее значение оценки (search.best_score_).

scorer_функция или словарь

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

n_splits_int

Количество разбиений перекрестной проверки (фолдов/итераций).

время повторного обученияfloat

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

Это присутствует только если refit не является False.

multimetric_bool

Вычисляют ли скореры несколько метрик.

classes_ndarray формы (n_classes,)

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

n_features_in_int

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

feature_names_in_ndarray формы (n_features_in_,)

Имена признаков, наблюдаемых во время fit. Определено только если best_estimator_ определен (см. документацию для refit параметр для получения дополнительных сведений) и что best_estimator_ предоставляет feature_names_in_ при обучении.

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

Смотрите также

HalvingGridSearchCV

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

Примечания

Выбранные параметры — те, которые максимизируют оценку отложенных данных в соответствии с параметром оценки.

Все комбинации параметров, оценённые как NaN, будут иметь одинаковый низший ранг.

Примеры

>>> from sklearn.datasets import load_iris
>>> from sklearn.ensemble import RandomForestClassifier
>>> from sklearn.experimental import enable_halving_search_cv  # noqa
>>> from sklearn.model_selection import HalvingRandomSearchCV
>>> from scipy.stats import randint
>>> import numpy as np
...
>>> X, y = load_iris(return_X_y=True)
>>> clf = RandomForestClassifier(random_state=0)
>>> np.random.seed(0)
...
>>> param_distributions = {"max_depth": [3, None],
...                        "min_samples_split": randint(2, 11)}
>>> search = HalvingRandomSearchCV(clf, param_distributions,
...                                resource='n_estimators',
...                                max_resources=10,
...                                random_state=0).fit(X, y)
>>> search.best_params_
{'max_depth': None, 'min_samples_split': 10, 'n_estimators': 9}
decision_function(X)[источник]#

Вызовите decision_function у оценщика с наилучшими найденными параметрами.

Доступно только если refit=True и базовый оценчик поддерживает decision_function.

Параметры:
Xиндексируемый, длина n_samples

Должен соответствовать входным предположениям базового оценщика.

Возвращает:
y_scorendarray формы (n_samples,) или (n_samples, n_classes) или (n_samples, n_classes * (n_classes-1) / 2)

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

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

Запустите fit со всеми наборами параметров.

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

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

yarray-like, форма (n_samples,) или (n_samples, n_output), опционально

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

**paramsсловарь строк -> объект

Параметры, передаваемые в fit метод оценщика.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вызовите inverse_transform для оценщика с наилучшими найденными параметрами.

Доступно только если базовый оценщик реализует inverse_transform и refit=True.

Параметры:
Xиндексируемый, длина n_samples

Должен соответствовать входным предположениям базового оценщика.

Возвращает:
X_original{ndarray, разреженная матрица} формы (n_samples, n_features)

Результат inverse_transform функция для X на основе оценщика с наилучшими найденными параметрами.

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

Вызвать predict на оценщике с наилучшими найденными параметрами.

Доступно только если refit=True и базовый оценчик поддерживает predict.

Параметры:
Xиндексируемый, длина n_samples

Должен соответствовать входным предположениям базового оценщика.

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

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

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

Вызовите predict_log_proba на оценщике с наилучшими найденными параметрами.

Доступно только если refit=True и базовый оценчик поддерживает predict_log_proba.

Параметры:
Xиндексируемый, длина n_samples

Должен соответствовать входным предположениям базового оценщика.

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

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

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

Вызвать predict_proba у оценщика с наилучшими найденными параметрами.

Доступно только если refit=True и базовый оценчик поддерживает predict_proba.

Параметры:
Xиндексируемый, длина n_samples

Должен соответствовать входным предположениям базового оценщика.

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

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

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

Возвращает оценку на заданных данных, если оценщик был переобучен.

Это использует оценку, определенную scoring где предоставлено, и best_estimator_.score метод в противном случае.

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

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

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

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

**paramsdict

Параметры, передаваемые в базовый оценщик(и).

Добавлено в версии 1.4: Доступно только если enable_metadata_routing=True. См. Руководство по маршрутизации метаданных для получения дополнительной информации.

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

Оценка, определяемая scoring если предоставлен, и best_estimator_.score метод в противном случае.

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

Вызовите score_samples на оценщике с наилучшими найденными параметрами.

Доступно только если refit=True и базовый оценчик поддерживает score_samples.

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

Параметры:
Xитерируемый объект

Данные для предсказания. Должны удовлетворять входным требованиям базового оценщика.

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

The best_estimator_.score_samples метод.

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

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

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

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

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

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

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

преобразовать(X)[источник]#

Вызовите transform на оценщике с наилучшими найденными параметрами.

Доступно только если базовый оценщик поддерживает transform и refit=True.

Параметры:
Xиндексируемый, длина n_samples

Должен соответствовать входным предположениям базового оценщика.

Возвращает:
Xt{ndarray, разреженная матрица} формы (n_samples, n_features)

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