Spec-Zone.ru › scikit-learn

RandomizedSearchCV

classsklearn.model_selection.RandomizedSearchCV(estimator, param_distributions, *, n_iter=10, scoring=None, n_jobs=None, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', random_state=None, error_score=nan, return_train_score=False)[исходный код]

Случайный поиск по гиперпараметрам.

RandomizedSearchCV реализует методы “fit” и “score”. Он также реализует “score_samples”, “predict”, “predict_proba”, “decision_function”, “transform” и “inverse_transform”, если они реализованы в используемом оценщике.

Параметры оценщика, используемые для применения этих методов, оптимизируются с помощью поиска по настройкам параметров с перекрёстной проверкой.

В отличие от GridSearchCV, проверяются не все значения параметров: из заданных распределений выбирается фиксированное число настроек параметров. Число проверяемых настроек параметров задаётся параметром n_iter.

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

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

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

Параметры:
estimatorобъект оценщика

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

param_distributionsdict или list of dicts

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

n_iterint, default=10

Число выбираемых настроек параметров. Параметр n_iter задаёт компромисс между временем выполнения и качеством решения.

scoringstr, callable, list, tuple or dict, default=None

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

Если scoring задаёт одну метрику, можно использовать:

  • одну строку (см. оценщики, задаваемые строковым именем);
  • вызываемый объект (см. вызываемые оценщики), возвращающий одно значение;
  • None используется критерий оценки по умолчанию для estimator.

Если scoring задаёт несколько метрик, можно использовать:

  • список или кортеж уникальных строк;
  • вызываемый объект, возвращающий словарь, в котором ключи — это имена метрик, а значения — оценки метрик;
  • словарь, в котором ключи — это имена метрик, а значения — вызываемые объекты.

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

Если значение равно None, используется метод score оценщика.

n_jobsint, default=None

Число задач, выполняемых параллельно. None означает 1, если только не используется контекст joblib.parallel_backend. -1 означает использование всех процессоров. Дополнительные сведения см. в глоссарии.

Изменено в версии v0.20: значение n_jobs по умолчанию изменено с 1 на None

refitbool, str, or callable, default=True

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

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

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

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

Также при оценке по нескольким метрикам атрибуты best_index_, best_score_ и best_params_ будут доступны только в том случае, если задан refit, и все они будут определяться относительно этого конкретного оценщика.

Подробнее об оценке по нескольким метрикам см. описание параметра scoring.

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

Изменено в версии 0.20: добавлена поддержка вызываемых объектов.

cvint, генератор перекрёстной проверки или итерируемый объект, default=None

Определяет стратегию разбиения для перекрёстной проверки. Для cv можно указать:

  • None, чтобы использовать перекрёстную проверку с 5 блоками по умолчанию;
  • целое число, задающее число блоков в (Stratified)KFold;
  • разделитель для перекрёстной проверки;
  • итерируемый объект, возвращающий разбиения (train, test) в виде массивов индексов.

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

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

Изменено в версии 0.22: значение cv по умолчанию для None изменено с 3 блоков на 5.

verboseint, default = 0

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

  • 0 : сообщения не выводятся;
  • >=1 : сводка общего числа обучений;
  • >=2 : время вычислений для каждого блока и кандидата параметров;
  • >=3 : индексы блоков и оценки;
  • >=10 : индексы кандидатов параметров и сообщения START перед каждым обучением.
pre_dispatchint, or str, default=’2*n_jobs’

Управляет числом задач, отправляемых на выполнение в параллельном режиме. Уменьшение этого числа может помочь избежать чрезмерного потребления памяти, если задач отправляется больше, чем процессоры могут обработать. Этот параметр может принимать следующие значения:

  • None — все задачи сразу создаются и запускаются. Используйте это значение для лёгких и быстро выполняющихся задач, чтобы избежать задержек из-за запуска задач по мере необходимости;
  • целое число, задающее точное общее число запускаемых задач;
  • строка, задающая выражение через n_jobs, например ‘2*n_jobs’.
random_stateint, экземпляр RandomState или None, default=None

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

error_score‘raise’ или числовое значение, default=np.nan

Значение, присваиваемое оценке в случае ошибки при обучении оценщика. Если задано значение ‘raise’, ошибка вызывается повторно. Если указано числовое значение, вызывается FitFailedWarning. Этот параметр не влияет на этап повторного обучения, при котором ошибка всегда будет вызвана.

return_train_scorebool, default=False

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

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

Изменено в версии 0.21: значение по умолчанию изменено с True на False

Атрибуты:
cv_results_dict of numpy (masked) ndarrays

Словарь, в котором ключи — это заголовки столбцов, а значения — сами столбцы; его можно импортировать в pandas DataFrame.

Например, приведённая ниже таблица

param_kernel

param_gamma

split0_test_score

…

rank_test_score

‘rbf’

0.1

0.80

…

1

‘rbf’

0.2

0.84

…

3

‘rbf’

0.3

0.70

…

2

будет представлена словарём cv_results_ вида:

{
'param_kernel' : masked_array(data = ['rbf', 'rbf', 'rbf'],
                              mask = False),
'param_gamma'  : masked_array(data = [0.1 0.2 0.3], mask = False),
'split0_test_score'  : [0.80, 0.84, 0.70],
'split1_test_score'  : [0.82, 0.50, 0.70],
'mean_test_score'    : [0.81, 0.67, 0.70],
'std_test_score'     : [0.01, 0.24, 0.00],
'rank_test_score'    : [1, 3, 2],
'split0_train_score' : [0.80, 0.92, 0.70],
'split1_train_score' : [0.82, 0.55, 0.70],
'mean_train_score'   : [0.81, 0.74, 0.70],
'std_train_score'    : [0.01, 0.19, 0.00],
'mean_fit_time'      : [0.73, 0.63, 0.43],
'std_fit_time'       : [0.01, 0.02, 0.01],
'mean_score_time'    : [0.01, 0.06, 0.04],
'std_score_time'     : [0.00, 0.00, 0.00],
'params'             : [{'kernel' : 'rbf', 'gamma' : 0.1}, ...],
}

Пример анализа cv_results_ см. в разделе статистическое сравнение моделей с помощью поиска по сетке.

ПРИМЕЧАНИЕ

Ключ 'params' используется для хранения списка словарей настроек параметров для всех кандидатов параметров.

Значения mean_fit_time, std_fit_time, mean_score_time и std_score_time задаются в секундах.

При оценке по нескольким метрикам оценки всех оценщиков доступны в словаре cv_results_ по ключам, оканчивающимся именем соответствующего оценщика ('_<scorer_name>'), а не '_score', как показано выше. (например, ‘split0_test_precision’, ‘mean_train_precision’ и т. д.)

best_estimator_оценщик

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

При оценке по нескольким метрикам этот атрибут присутствует только в том случае, если задан refit.

Дополнительные сведения о допустимых значениях см. в описании параметра refit.

best_score_float

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

При оценке по нескольким метрикам этот атрибут недоступен, если refit имеет значение False. Дополнительные сведения см. в описании параметра refit.

Этот атрибут недоступен, если refit является функцией.

best_params_dict

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

При оценке по нескольким метрикам этот атрибут недоступен, если refit имеет значение False. Дополнительные сведения см. в описании параметра refit.

best_index_int

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

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

При оценке по нескольким метрикам этот атрибут недоступен, если refit имеет значение False. Дополнительные сведения см. в описании параметра refit.

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

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

При оценке по нескольким метрикам этот атрибут содержит проверенный словарь scoring, сопоставляющий ключ оценщика вызываемому объекту-оценщику.

n_splits_int

Число разбиений (блоков/итераций) при перекрёстной проверке.

refit_time_float

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

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

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

multimetric_bool

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

classes_ndarray of shape (n_classes,)

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

n_features_in_int

Число признаков, учтённых во время обучения.

feature_names_in_ndarray of shape (n_features_in_,)

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

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

См. также

GridSearchCV

Выполняет исчерпывающий поиск по сетке параметров.

ParameterSampler

Генератор настроек параметров, создаваемый на основе param_distributions.

Примечания

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

Если для n_jobs задано значение больше единицы, данные копируются для каждой настройки параметров (а не n_jobs раз). Это делается для повышения эффективности, если отдельные задачи выполняются очень быстро, но может привести к ошибкам, если набор данных велик и памяти недостаточно. В этом случае можно задать pre_dispatch. Тогда данные будут копироваться только pre_dispatch раз. Разумное значение для pre_dispatch — 2 * n_jobs.

Примеры

>>> from sklearn.datasets import load_iris
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.model_selection import RandomizedSearchCV
>>> from scipy.stats import uniform
>>> iris = load_iris()
>>> logistic = LogisticRegression(solver='saga', tol=1e-2, max_iter=200,
...                               random_state=0)
>>> distributions = dict(C=uniform(loc=0, scale=4),
...                      l1_ratio=[0, 1])
>>> clf = RandomizedSearchCV(logistic, distributions, random_state=0)
>>> search = clf.fit(iris.data, iris.target)
>>> search.best_params_
{'C': np.float64(2.195...), 'l1_ratio': 1}
decision_function(X)[исходный код]

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

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

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

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

Возвращает:
y_scorendarray of shape (n_samples,) or (n_samples, n_classes) or (n_samples, n_classes * (n_classes-1) / 2)

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

fit(X, y=None, **params)[исходный код]

Выполнить обучение со всеми наборами параметров.

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

Обучающие векторы, где n_samples — число образцов, а n_features — число признаков. Для заранее вычисленного ядра или матрицы расстояний ожидаемая форма X — (n_samples, n_samples).

yarray-like of shape (n_samples, n_output) or (n_samples,), default=None

Целевые значения, соответствующие X, для классификации или регрессии; None для обучения без учителя.

**paramsdict of str -> object

Параметры, передаваемые методу fit оценщика, оценщику и разделителю для перекрёстной проверки.

Если длина параметра обучения, являющегося массивоподобным объектом, равна num_samples, он будет разбит при перекрёстной проверке вместе с X и y. Например, параметр sample_weight разбивается, поскольку len(sample_weights) = len(X). Однако это поведение не применяется к groups, который передаётся разделителю, настроенному через параметр cv конструктора. Таким образом, groups используется для выполнения разбиения и определяет, какие образцы относятся к каждой стороне разбиения.

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

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

get_metadata_routing()[исходный код]

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

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

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

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

MetadataRouter, содержащий информацию о маршрутизации.

get_params(deep=True)[исходный код]

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

Параметры:
deepbool, default=True

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

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

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

inverse_transform(X)[исходный код]

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

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

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

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

Возвращает:
X_original{ndarray, sparse matrix} of shape (n_samples, n_features)

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

predict(X)[исходный код]

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

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

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

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

Возвращает:
y_predndarray of shape (n_samples,)

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

predict_log_proba(X)[исходный код]

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

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

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

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

Возвращает:
y_predndarray of shape (n_samples,) or (n_samples, n_classes)

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

predict_proba(X)[исходный код]

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

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

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

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

Возвращает:
y_predndarray of shape (n_samples,) or (n_samples, n_classes)

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

score(X, y=None, **params)[исходный код]

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

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

Параметры:
Xмассивоподобный объект формы (n_samples, n_features)

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

yмассивоподобный объект формы (n_samples, n_output) или (n_samples,), по умолчанию None

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

**paramsсловарь

Параметры, передаваемые используемым оценщикам.

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

Возвращает:
scoreчисло с плавающей точкой

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

score_samples(X)[исходный код]

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

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

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

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

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

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

Метод best_estimator_.score_samples.

set_callbacks(*callbacks)[исходный код]

Устанавливает обратные вызовы для оценщика.

Параметры:
*callbacksэкземпляры обратных вызовов

Обратные вызовы, которые нужно установить.

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

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

set_params(**params)[исходный код]

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

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

Параметры:
**paramsсловарь

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

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

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

transform(X)[исходный код]

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

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

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

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

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

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

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

Пример распознавания лиц с использованием собственных лиц и SVM

ColumnTransformer для смешанных типов данных

Сравнение гребневой регрессии с ядром и регрессии на основе гауссовских процессов

Пример конвейера для извлечения признаков текста и оценки

Сравнение случайного поиска и поиска по сетке для оценки гиперпараметров

Основные нововведения 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.RandomizedSearchCV.html

Spec-Zone.ru

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