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)[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

Среднее значение перекрёстной проверки для лучшей модели.

Для многометрической оценки этот атрибут недоступен, если 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_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 преобразованный в новом пространстве на основе оценщика с лучшими найденными параметрами.

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

Основные моменты выпуска scikit-learn 0.24

Распознавание лиц с помощью собственных векторов и SVM

Сравнение регрессии с ядром и регрессии с гауссовым процессом

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

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

ColumnTransformer с разнородными типами данных

© 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

Spec-Zone.ru

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