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)[source]
-
Случайный поиск по гиперпараметрам.
RandomizedSearchCV реализует методы «fit» и «score». Он также реализует методы «score_samples», «predict», «predict_proba», «decision_function», «transform» и «inverse_transform», если они реализованы в используемом оценщике.
Параметры используемого оценщика оптимизируются с помощью перекрестной проверки по настройкам параметров.
В отличие от GridSearchCV, не все значения параметров проверяются, а вместо этого фиксированное количество настроек параметров выбирается из заданных распределений. Количество проверяемых настроек параметров задаётся параметром n_iter.
Если все параметры представлены в виде списка, выполняется выборка без возвращения. Если хотя бы один параметр задан как распределение, используется выборка с возвращением. Настоятельно рекомендуется использовать непрерывные распределения для непрерывных параметров.
Подробнее см. в Руководстве пользователя.
Добавлен в версии 0.14.
- Параметры:
-
- estimatorобъект оценщика
-
Объект данного типа создаётся для каждой точки сетки. Предполагается, что он реализует интерфейс оценщика scikit-learn. Либо оценщик должен предоставлять функцию
score, либоscoringдолжен быть передан. - param_distributionsсловарь или список словарей
-
Словарь, где ключами являются имена параметров (
str) , а значениями — распределения или списки параметров для проверки. Распределения должны предоставлять методrvsдля выборки (например, те, которые из scipy.stats.distributions). Если задан список, он выбирается равномерно. Если задан список словарей, сначала равномерно выбирается словарь, а затем параметр выбирается, используя этот словарь, как указано выше. - n_iterint, по умолчанию=10
-
Количество настроек параметров, которые выбираются. n_iter определяет компромисс между временем выполнения и качеством решения.
- scoringстрока, вызываемый объект, список, кортеж или словарь, по умолчанию=None
-
Стратегия оценки производительности модели перекрёстной проверки на тестовом наборе.
Если
scoringпредставляет собой единственный показатель, можно использовать:- одну строку (см. Параметр scoring: определение правил оценки модели);
- вызываемый объект (см. Вызываемые объекты-оценщики), который возвращает одно значение.
Если
scoringпредставляет собой несколько показателей, можно использовать:- список или кортеж уникальных строк;
- вызываемый объект, возвращающий словарь, где ключи — имена метрик, а значения — значения метрик;
- словарь с именами метрик в качестве ключей и вызываемыми объектами в качестве значений.
См. Указание нескольких метрик для оценки для примера.
Если None, используется метод score оценщика.
- n_jobsint, по умолчанию=None
-
Количество задач, которые нужно выполнить параллельно.
Noneозначает 1, за исключением контекстаjoblib.parallel_backend.-1означает использование всех процессоров. См. Глоссарий для получения дополнительных сведений.Изменено в версии v0.20:
n_jobsзначение по умолчанию изменено с 1 на None - refitbool, строка или вызываемый объект, по умолчанию=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параметр для получения дополнительной информации о многомерной оценке.Изменено в версии 0.20: Добавлена поддержка вызываемых объектов.
- cvint, генератор перекрёстной проверки или итерируемый объект, по умолчанию=None
-
Определяет стратегию разделения перекрестной проверки. Возможные входные данные для cv:
- None, для использования по умолчанию 5-кратной перекрёстной проверки,
- целое число, для указания числа блоков в
(Stratified)KFold, - Разделитель перекрестной проверки,
- Итерируемый объект, возвращающий (train, test) разбиения в виде массивов индексов.
Для целочисленных/None входных данных, если оценщик является классификатором и
yявляется либо двоичным, либо многоклассовым, используетсяStratifiedKFold. Во всех остальных случаях используетсяKFold. Эти разделители создаются с помощьюshuffle=False, поэтому разбиения будут одинаковыми при вызовах.Обратитесь к Руководству пользователя для ознакомления с различными стратегиями перекрёстной проверки, которые можно использовать здесь.
Изменено в версии 0.22:
cvзначение по умолчанию, если None, изменено с 3-кратного на 5-кратное. - verboseint
-
Управляет подробностью вывода: чем выше, тем больше сообщений.
- >1 : отображается время вычисления для каждого блока и кандидата параметра;
- >2 : отображается также значение показателя;
- >3 : отображаются индексы блока и кандидата параметра вместе с начальным временем вычисления.
- pre_dispatchint или строка, по умолчанию=’2*n_jobs’
-
Управляет количеством задач, которые отправляются во время параллельного выполнения. Уменьшение этого числа может быть полезно для предотвращения чрезмерного потребления памяти, когда отправляется больше задач, чем процессоры могут обработать. Этот параметр может быть:
- None, в этом случае все задачи создаются и запускаются сразу. Используйте это для лёгких и быстрых задач, чтобы избежать задержек из-за создания задач по требованию
- Целое число, задающее точное количество созданных задач
- Строка, задающая выражение как функцию от n_jobs, как в ‘2*n_jobs’
- random_stateint, экземпляр RandomState или None, по умолчанию=None
-
Состояние генератора псевдослучайных чисел, используемое для случайной равномерной выборки из списков возможных значений вместо распределений scipy.stats. Передайте целое число для воспроизводимого результата при нескольких вызовах функции. См. Глоссарий.
- error_score‘raise’ или числовое значение, по умолчанию=np.nan
-
Значение, которое присваивается показателю, если во время подгонки оценщика произошла ошибка. Если установлено значение ‘raise’, ошибка повышается. Если задано числовое значение, генерируется предупреждение FitFailedWarning. Этот параметр не влияет на этап refit, который всегда будет генерировать ошибку.
- return_train_scorebool, по умолчанию=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}, ...], }ПРИМЕЧАНИЕ
Ключ
'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_estimator
-
Модель, выбранная в ходе поиска, то есть модель, которая дала наилучший результат (или наименьшую потерю, если указано) на оставшихся данных. Недоступна, если
refit=False.Для многометрической оценки этот атрибут присутствует только если
refitуказано.См. параметр
refitдля получения дополнительной информации об разрешенных значениях. - best_score_float
-
Среднее значение перекрёстной проверки для лучшей модели.
Для многометрической оценки этот атрибут недоступен, если
refitFalse. См. параметрrefitдля получения дополнительной информации.Этот атрибут недоступен, если
refitявляется функцией. - best_params_dict
-
Настройки параметров, которые дали лучшие результаты на оставшихся данных.
Для многометрической оценки этот атрибут недоступен, если
refitFalse. См. параметрrefitдля получения дополнительной информации. - best_index_int
-
Индекс (массивов
cv_results_) , который соответствует наилучшей комбинации параметров.Словарь в
search.cv_results_['params'][search.best_index_]содержит настройки параметров для лучшей модели, которая даёт наивысший средний балл (search.best_score_).Для многометрической оценки этот атрибут недоступен, если
refitFalse. См. параметрrefitдля получения дополнительной информации. - scorer_function or a dict
-
Функция оценки, используемая на оставшихся данных для выбора наилучших параметров модели.
Для многометрической оценки этот атрибут содержит проверенный словарь
scoring, который сопоставляет ключ оценщика вызываемому объекту оценщика. - n_splits_int
-
Количество разбиений перекрёстной проверки (фолдов/итераций).
- refit_time_float
-
Время, затраченное на переобучение лучшей модели на всем наборе данных.
Присутствует только если
refitне False.Добавлен в версии 0.20.
- multimetric_bool
-
Указывает, вычисляются ли оценщиками несколько метрик.
-
classes_ndarray of shape (n_classes,) -
Метки классов.
-
n_features_in_int -
Количество признаков, увиденных во время fit.
-
feature_names_in_ndarray of shape (
n_features_in_,) -
Имена признаков, увиденные во время fit. Определяются только если
best_estimator_определено (см. документацию параметраrefitдля получения дополнительной информации) иbest_estimator_экспонируетfeature_names_in_при выполнении fit.Добавлен в версии 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), ... penalty=['l2', 'l1']) >>> clf = RandomizedSearchCV(logistic, distributions, random_state=0) >>> search = clf.fit(iris.data, iris.target) >>> search.best_params_ {'C': np.float64(2...), 'penalty': 'l1'}- propertyclasses_
-
Метки классов.
Доступно только если
refit=Trueи оценщик является классификатором.
- decision_function(X)[source]
-
Вызов 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)
-
Результат decision_function для
Xна основе оценщика с лучшими найденными параметрами.
- fit(X, y=None, **params)[source]
-
Запуск fit со всеми наборами параметров.
- Параметры:
-
- Xмассив-подобный формы (n_samples, n_features) или (n_samples, n_samples)
-
Векторы обучения, где
n_samples— количество образцов, аn_features— количество признаков. Для предварительно вычисленного ядра или матрицы расстояний ожидаемая форма X — (n_samples, n_samples). - yмассив-подобный формы (n_samples, n_output) или (n_samples,), по умолчанию None
-
Цель, связанная с X для классификации или регрессии; None для несверхвизуализированного обучения.
- **paramsdict str -> object
-
Параметры, передаваемые методу
fitоценщика, оценщика и разделителя перекрёстной проверки.Если параметр fit — массив-подобный, длина которого равна
num_samples, он будет разделен перекрёстной проверкой вместе сXиy. Например, параметр sample_weight разделяется, потому чтоlen(sample_weights) = len(X). Однако, это поведение не применяется кgroups, который передаётся разделителю, настроенному с помощью параметраcvконструктора. Таким образом,groupsиспользуется для выполнения разделения и определяет, какие образцы будут назначены каждой стороне разделения.
- Возвращает:
-
- selfobject
-
Экземпляр обученного оценщика.
-
- get_metadata_routing()[source]
-
Получить маршрутизацию метаданных этого объекта.
Пожалуйста, ознакомьтесь с Руководством пользователя о том, как работает механизм маршрутизации.
Добавлено в версии 1.4.
- Возвращает:
-
- routingMetadataRouter
-
Объект
MetadataRouter, инкапсулирующий информацию о маршрутизации.
- get_params(deep=True)[source]
-
Получить параметры для этого оценщика.
- Параметры:
-
- deepbool, default=True
-
Если True, вернет параметры для этого оценщика и содержащиеся вложенные объекты, которые являются оценщиками.
- Возвращает:
-
- paramsdict
-
Имена параметров, сопоставленные с их значениями.
- inverse_transform(X=None, Xt=None)[source]
-
Вызов inverse_transform для оценщика с наилучшими найденными параметрами.
Доступно только если базовый оценщик реализует
inverse_transformиrefit=True.- Параметры:
-
- Xиндексируемый, длина n_samples
-
Должен соответствовать входным предположениям базового оценщика.
- Xtиндексируемый, длина n_samples
-
Должен соответствовать входным предположениям базового оценщика.
Устарело начиная с версии 1.5:
Xtустарел в версии 1.5 и будет удален в версии 1.7. ИспользуйтеXвместо него.
- Возвращает:
-
- X{ndarray, разреженная матрица} формы (n_samples, n_features)
-
Результат функции
inverse_transformдляXtна основе оценщика с наилучшими найденными параметрами.
- propertyn_features_in_
-
Количество признаков, обнаруженных во время подгонки.
Доступно только когда
refit=True.
- predict(X)[source]
-
Вызов predict для оценщика с наилучшими найденными параметрами.
Доступно только если
refit=Trueи базовый оценщик поддерживаетpredict.- Параметры:
-
- Xиндексируемый, длина n_samples
-
Должен соответствовать входным предположениям базового оценщика.
- Возвращает:
-
- y_predndarray формы (n_samples,)
-
Предсказанные метки или значения для
Xна основе оценщика с наилучшими найденными параметрами.
- predict_log_proba(X)[source]
-
Вызов predict_log_proba для оценщика с наилучшими найденными параметрами.
Доступно только если
refit=Trueи базовый оценщик поддерживаетpredict_log_proba.- Параметры:
-
- Xиндексируемый, длина n_samples
-
Должен соответствовать входным предположениям базового оценщика.
- Возвращает:
-
- y_predndarray формы (n_samples,) или (n_samples, n_classes)
-
Предсказанные логарифмические вероятности класса для
Xна основе оценщика с наилучшими найденными параметрами. Порядок классов соответствует порядку в установленном атрибуте classes_.
- predict_proba(X)[source]
-
Вызов 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в противном случае.- Параметры:
-
- Xмассивоподобный формы (n_samples, n_features)
-
Входные данные, где
n_samples— это количество выборок, аn_features— количество признаков. - yмассивоподобный формы (n_samples, n_output) или (n_samples,), default=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_scoreмассив NumPy формы (n_samples,)
-
Результат метода
best_estimator_.score_samples.
- set_params(**params)[source]
-
Установка параметров данного оценщика.
Метод работает как с простыми оценщиками, так и с вложенными объектами (например,
Pipeline). Последние имеют параметры в форме<component>__<parameter>для возможности обновления каждого компонента вложенного объекта.- Параметры:
-
- **paramsсловарь
-
Параметры оценщика.
- Возвращает:
-
- selfэкземпляр оценщика
-
Экземпляр оценщика.
- transform(X)[source]
-
Вызов метода transform на оценщике с лучшими найденными параметрами.
Доступно только если базовый оценщик поддерживает
transformиrefit=True.- Параметры:
-
- Xиндексируемый объект, длина n_samples
-
Должен соответствовать входным предположениям базового оценщика.
- Возвращает:
-
- Xt{массив NumPy, разреженная матрица} формы (n_samples, n_features)
-
Xпреобразованный в новом пространстве на основе оценщика с лучшими найденными параметрами.
Примеры из галереи
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.model_selection.RandomizedSearchCV.html