Spec-Zone.ru › scikit-learn

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-массивами (возможно, маскированными)

Словарь, в котором ключи — заголовки столбцов, а значения — столбцы; его можно импортировать в DataFrame pandas. Он содержит много информации для анализа результатов поиска. Подробнее см. в руководстве пользователя. Пример анализа 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, преобразованные в новое пространство на основе оценивателя с наилучшими найденными параметрами.

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

Интервалы прогнозирования для градиентного бустинга в задачах регрессии

Итерации последовательного отсечения

Основные нововведения scikit-learn 0.24

© 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

Spec-Zone.ru

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