Spec-Zone.ru › scikit-learn

GridSearchCV

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

Исчерпывающий поиск по заданным значениям параметров оценщика.

Основные методы: fit, predict.

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

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

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

Параметры:
estimatorestimator object

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

param_griddict or list of dictionaries

Словарь, в котором ключами являются имена параметров (str), а значениями — списки проверяемых настроек параметров, либо список таких словарей. Во втором случае выполняется поиск по сеткам, заданным каждым словарём в списке. Это позволяет искать по любой последовательности настроек параметров.

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

Стратегия оценки качества модели, прошедшей перекрёстную проверку, на тестовом наборе.

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

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

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

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

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

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 для этого экземпляра GridSearchCV.

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

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

О том, как разработать пользовательскую стратегию выбора с помощью вызываемого объекта через refit, см. Пользовательская стратегия повторного обучения при поиске по сетке с перекрёстной проверкой.

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

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

cvint, cross-validation generator or an iterable, default=None

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

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

Для целочисленных значений и None, если оценщик является классификатором, а y имеет значение binary или multiclass, используется 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’.
error_score‘raise’ or numeric, 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

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

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

param_kernel

param_gamma

param_degree

split0_test_score

…

rank_t…

‘poly’

–

2

0.80

…

2

‘poly’

–

3

0.70

…

4

‘rbf’

0.1

–

0.80

…

3

‘rbf’

0.2

–

0.93

…

1

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

{
'param_kernel': masked_array(data = ['poly', 'poly', 'rbf', 'rbf'],
                             mask = [False False False False]...)
'param_gamma': masked_array(data = [-- -- 0.1 0.2],
                            mask = [ True  True False False]...),
'param_degree': masked_array(data = [2.0 3.0 -- --],
                             mask = [False False  True  True]...),
'split0_test_score'  : [0.80, 0.70, 0.80, 0.93],
'split1_test_score'  : [0.82, 0.50, 0.70, 0.78],
'mean_test_score'    : [0.81, 0.60, 0.75, 0.85],
'std_test_score'     : [0.01, 0.10, 0.05, 0.08],
'rank_test_score'    : [2, 4, 3, 1],
'split0_train_score' : [0.80, 0.92, 0.70, 0.93],
'split1_train_score' : [0.82, 0.55, 0.70, 0.87],
'mean_train_score'   : [0.81, 0.74, 0.70, 0.90],
'std_train_score'    : [0.01, 0.19, 0.00, 0.03],
'mean_fit_time'      : [0.73, 0.63, 0.43, 0.49],
'std_fit_time'       : [0.01, 0.02, 0.01, 0.01],
'mean_score_time'    : [0.01, 0.06, 0.04, 0.04],
'std_score_time'     : [0.00, 0.00, 0.00, 0.01],
'params'             : [{'kernel': 'poly', 'degree': 2}, ...],
}

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

Примечание

Ключ '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.

best_score_float

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

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

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

best_params_dict

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

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

best_index_int

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

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

При оценке по нескольким метрикам доступен только в том случае, если указан 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

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

feature_names_in_ndarray of shape (n_features_in_,)

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

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

См. также

ParameterGrid

Генерирует все комбинации сетки гиперпараметров.

train_test_split

Вспомогательная функция для разделения данных на набор для разработки, пригодный для обучения экземпляра GridSearchCV, и набор для итоговой оценки.

sklearn.metrics.make_scorer

Создаёт оценщик на основе метрики качества или функции потерь.

Примечания

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

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

Примеры

>>> from sklearn import svm, datasets
>>> from sklearn.model_selection import GridSearchCV
>>> iris = datasets.load_iris()
>>> parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}
>>> svc = svm.SVC()
>>> clf = GridSearchCV(svc, parameters)
>>> clf.fit(iris.data, iris.target)
GridSearchCV(estimator=SVC(),
             param_grid={'C': [1, 10], 'kernel': ('linear', 'rbf')})
>>> sorted(clf.cv_results_.keys())
['mean_fit_time', 'mean_score_time', 'mean_test_score',...
 'param_C', 'param_kernel', 'params',...
 'rank_test_score', 'split0_test_score',...
 'split2_test_score', ...
 'std_fit_time', 'std_score_time', 'std_test_score']
decision_function(X)[исходный код]

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

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

Параметры:
Xindexable, length 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 оценщика, оценщику и разбивателю CV.

Если длина параметра обучения, являющегося массивом или подобным массиву объектом, равна 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.

Параметры:
Xindexable, length n_samples

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

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

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

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

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

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

Параметры:
Xindexable, length n_samples

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

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

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

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

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

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

Параметры:
Xindexable, length n_samples

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

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

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

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

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

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

Параметры:
Xindexable, length n_samples

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

Возвращает:
y_predndarray of shape (n_samples,) or (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,), по умолчанию None

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

**paramsсловарь

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

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

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

Оценка, определённая в 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]

Задаёт функции обратного вызова для оценщика.

Параметры:
*callbacksэкземпляры функций обратного вызова

Функции обратного вызова, которые нужно задать.

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

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

set_params(**params)[source]

Задаёт параметры этого оценщика.

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

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

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

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

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

transform(X)[source]

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

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

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

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

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

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

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

Анализ сходимости моделей логистической регрессии с регуляризацией

Агломерация признаков и одномерный отбор

ColumnTransformer для данных разных типов

Выбор метода уменьшения размерности с помощью Pipeline и GridSearchCV

Конвейерная обработка: объединение PCA и логистической регрессии

Объединение нескольких методов извлечения признаков

Оценка ковариации со сжатием: LedoitWolf, OAS и максимальное правдоподобие

Выбор модели с помощью вероятностных PCA и факторного анализа (FA)

Сравнение моделей Random Forest и Histogram Gradient Boosting

Сравнение ядерной гребневой регрессии и SVR

Отображение конвейеров

Выбор модели гауссовой смеси

Настройка порога решения для обучения с учётом затрат

Пользовательская стратегия повторного обучения при поиске по сетке с перекрёстной проверкой

Баланс между сложностью модели и оценкой при перекрёстной проверке

Статистическое сравнение моделей с помощью поиска по сетке

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

Демонстрация оценки по нескольким метрикам с помощью cross_val_score и GridSearchCV

Вложенная и невложенная перекрёстная проверка

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

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

Обзор метаоценщиков для многоклассового обучения

Кэширование ближайших соседей

Оценка плотности методом ядер

Дискретизация признаков

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

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

Параметры RBF SVM

Границы классификации для разных ядер SVM

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.model_selection.GridSearchCV.html

Spec-Zone.ru

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