HalvingRandomSearchCV
- classsklearn.model_selection.HalvingRandomSearchCV(estimator, param_distributions, *, n_candidates='exhaust', factor=3, resource='n_samples', max_resources='auto', min_resources='smallest', aggressive_elimination=False, cv=5, scoring=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’. - factorint или float, по умолчанию 3
-
Параметр «деления пополам», определяющий долю кандидатов, отбираемых для каждой следующей итерации. Например,
factor=3означает, что будет выбрана только треть кандидатов. -
resource
'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таким образом, чтобы на последней итерации использовалось максимально возможное количество ресурсов. Иными словами, на последней итерации будет использоваться наибольшее значение меньшеmax_resources, которое кратно иmin_resources, иfactor. Как правило, использование ‘exhaust’ позволяет получить более точный оценщик, но требует немного больше времени. Значение ‘exhaust’ недоступно, еслиn_candidates='exhaust'.
Обратите внимание: количество ресурсов, используемых на каждой итерации, всегда кратно
min_resources. -
- aggressive_eliminationbool, по умолчанию False
-
Этот параметр имеет значение только в случаях, когда ресурсов недостаточно, чтобы после последней итерации сократить число оставшихся кандидатов до
factorили меньше. ЕслиTrue, процесс поиска будет повторять первую итерацию столько раз, сколько потребуется, пока количество кандидатов не станет достаточно малым. По умолчанию установлено значениеFalse, то есть на последней итерации может оцениваться болееfactorкандидатов. Подробнее см. в разделе Агрессивное исключение кандидатов. - cvint, генератор разбиения для перекрёстной проверки или итерируемый объект, по умолчанию 5
-
Определяет стратегию разбиения для перекрёстной проверки. Для cv можно задать:
- целое число, задающее количество фолдов в
(Stratified)KFold, - генератор разбиения для перекрёстной проверки,
- итерируемый объект, возвращающий разбиения (train, test) в виде массивов индексов.
Для целочисленных значений и None, если оценщик является классификатором, а
y— бинарная или многоклассовая, используетсяStratifiedKFold. Во всех остальных случаях используетсяKFold. Эти генераторы разбиений создаются сshuffle=False, поэтому разбиения будут одинаковыми при каждом вызове.Различные стратегии перекрёстной проверки, которые можно использовать здесь, описаны в руководстве пользователя.
Примечание
Из-за особенностей реализации фолды, создаваемые
cv, должны оставаться неизменными при нескольких вызовахcv.split(). Для встроенных итераторовscikit-learnэтого можно добиться, отключив перемешивание (shuffle=False) или задав целочисленное значение для параметраrandom_stateобъектаcv. - целое число, задающее количество фолдов в
- scoringstr или вызываемый объект, по умолчанию None
-
Метод оценки предсказаний на тестовом наборе.
- str: доступные варианты см. в разделе Именованные строками функции оценки.
- вызываемый объект: вызываемый объект оценки (например, функция) с сигнатурой
scorer(estimator, X, y). Подробнее см. в разделе Вызываемые функции оценки. -
None: используется критерий оценки по умолчанию дляestimator.
- refitbool или вызываемый объект, по умолчанию 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_список int
-
Количество ресурсов, использованных на каждой итерации.
- n_candidates_список int
-
Количество параметров-кандидатов, оценённых на каждой итерации.
- n_remaining_candidates_int
-
Количество параметров-кандидатов, оставшихся после последней итерации. Соответствует
ceil(n_candidates[-1] / factor) - max_resources_int
-
Максимальное количество ресурсов, которое может использовать любой кандидат на данной итерации. Обратите внимание: поскольку количество ресурсов, используемых на каждой итерации, должно быть кратно
min_resources_, фактическое количество ресурсов, использованных на последней итерации, может быть меньшеmax_resources_. - min_resources_int
-
Количество ресурсов, выделяемых каждому кандидату на первой итерации.
- n_iterations_int
-
Фактическое количество выполненных итераций. Если
aggressive_eliminationимеет значениеTrue, оно равноn_required_iterations_. В противном случае оно равно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-массивами (возможно, маскированными)
-
Словарь, в котором ключи — заголовки столбцов, а значения — столбцы; его можно импортировать в
DataFramepandas. Он содержит много информации для анализа результатов поиска. Подробнее см. в руководстве пользователя. Пример анализа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
-
Количество разбиений (фолдов/итераций) при перекрёстной проверке.
- refit_time_float
-
Время в секундах, затраченное на повторное обучение лучшей модели на всём наборе данных.
Присутствует только если
refitне равно False. - multimetric_bool
-
Показывает, вычисляют ли функции оценки несколько метрик.
-
classes_ndarray формы (n_classes,) -
Метки классов.
-
n_features_in_int -
Количество признаков, обнаруженных во время обучения.
-
feature_names_in_ndarray формы (
n_features_in_,) -
Названия признаков, обнаруженных во время обучения. Определяется только если задан
best_estimator_(подробнее см. в документации параметраrefit) и еслиbest_estimator_предоставляетfeature_names_in_при обучении.Добавлено в версии 1.0.
См. также
HalvingGridSearchCV-
Поиск по сетке параметров с использованием последовательного деления пополам.
Примечания
Выбираются параметры, максимизирующие оценку на отложенных данных в соответствии с параметром scoring.
Все комбинации параметров, получившие 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 со всеми наборами параметров.
- Параметры:
-
- Xмассивоподобный объект, форма (n_samples, n_features)
-
Обучающий вектор, где
n_samples— количество образцов, аn_features— количество признаков. - yмассивоподобный объект, форма (n_samples,) или (n_samples, n_output), необязательный
-
Целевые значения для X при классификации или регрессии; None для обучения без учителя.
- **paramsсловарь вида string -> object
-
Параметры, передаваемые методу
fitоценщика.
- Возвращает:
-
- selfобъект
-
Экземпляр обученного оценщика.
- get_metadata_routing()[исходный код]
-
Получить сведения о маршрутизации метаданных этого объекта.
О том, как работает механизм маршрутизации, см. в руководстве пользователя.
Добавлено в версии 1.4.
- Возвращает:
-
- routingMetadataRouter
-
Объект
MetadataRouter, содержащий сведения о маршрутизации.
- get_params(deep=True)[исходный код]
-
Получить параметры этого оценщика.
- Параметры:
-
- deepbool, по умолчанию 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)[source]
-
Возвращает оценку на заданных данных, если оцениватель был переобучен.
Используется оценка, определённая в
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)[source]
-
Вызывает score_samples для оценивателя с наилучшими найденными параметрами.
Доступно только если
refit=Trueи используемый оцениватель поддерживаетscore_samples.Добавлено в версии 0.24.
- Параметры:
-
- Xитерируемый объект
-
Данные, для которых нужно выполнить прогнозирование. Должны соответствовать требованиям к входным данным используемого оценивателя.
- Возвращает:
-
- y_scorendarray размера (n_samples,)
-
Метод
best_estimator_.score_samples.
- set_callbacks(*callbacks)[source]
-
Задаёт callback-функции для оценивателя.
- Параметры:
-
- *callbacksэкземпляры callback-функций
-
Callback-функции, которые нужно задать.
- Возвращает:
-
- selfэкземпляр оценивателя
-
Сам экземпляр оценивателя.
- set_params(**params)[source]
-
Задаёт параметры этого оценивателя.
Метод работает как с простыми оценивателями, так и с вложенными объектами (например,
Pipeline). Последние имеют параметры вида<component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.- Параметры:
-
- **paramsdict
-
Параметры оценивателя.
- Возвращает:
-
- selfэкземпляр оценивателя
-
Экземпляр оценивателя.
- transform(X)[source]
-
Вызывает transform для оценивателя с наилучшими найденными параметрами.
Доступно только если используемый оцениватель поддерживает
transformиrefit=True.- Параметры:
-
- Xиндексируемый объект, длина n_samples
-
Должны выполняться требования используемого оценивателя к входным данным.
- Возвращает:
-
- Xt{ndarray, разреженная матрица} размера (n_samples, n_features)
-
X, преобразованные в новое пространство на основе оценивателя с наилучшими найденными параметрами.
Примеры из галереи
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.model_selection.HalvingRandomSearchCV.html