cross_validate#

sklearn.model_selection.cross_validate(estimator, X, y=None, *, группы=None, оценка=None, cv=None, n_jobs=None, verbose=0, params=None, pre_dispatch='2*n_jobs', return_train_score=False, return_estimator=False, return_indices=False, error_score=nan)[источник]#

Оценить метрику(и) с помощью перекрестной проверки и также записать время обучения/оценки.

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

Параметры:
estimatorобъект оценщика, реализующий 'fit'

Объект, используемый для обучения данных.

X{array-like, sparse matrix} формы (n_samples, n_features)

Данные для обучения. Могут быть, например, списком или массивом.

yarray-like формы (n_samples,) или (n_samples, n_outputs), по умолчанию=None

Целевая переменная, которую пытаются предсказать в случае обучения с учителем.

группыarray-like формы (n_samples,), по умолчанию=None

Метки групп для образцов, используемых при разделении набора данных на обучающую/тестовую выборки. Используется только в сочетании с "Group" cv экземпляр (например, GroupKFold).

Изменено в версии 1.4: groups может быть передан только если маршрутизация метаданных не включена через sklearn.set_config(enable_metadata_routing=True). Когда маршрутизация включена, передайте groups наряду с другими метаданными через params аргумента вместо этого. Например: cross_validate(..., params={'groups': groups}).

оценкаstr, callable, list, tuple или dict, по умолчанию=None

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

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

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

  • список или кортеж уникальных строк;

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

  • словарь с именами метрик в качестве ключей и вызываемыми объектами в качестве значений.

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

cvint, генератор кросс-валидации или итерируемый объект, по умолчанию=None

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

  • None, чтобы использовать стандартную 5-кратную перекрестную проверку,

  • int, чтобы указать количество фолдов в (Stratified)KFold,

  • CV splitter,

  • Итерируемый объект, возвращающий (обучающие, тестовые) разбиения в виде массивов индексов.

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

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

Изменено в версии 0.22: cv значение по умолчанию, если None изменено с 3-кратного на 5-кратное.

n_jobsint, default=None

Количество параллельных задач. Обучение оценщика и вычисление оценки параллелизуются по разбиениям перекрестной проверки. None означает 1, если только не в joblib.parallel_backend контекст. -1 означает использование всех процессоров. См. Глоссарий для получения дополнительной информации.

verboseint, по умолчанию=0

Уровень подробности вывода.

paramsdict, по умолчанию=None

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

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

pre_dispatchint или str, по умолчанию=’2*n_jobs’

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

  • Целое число, указывающее точное количество создаваемых заданий

  • Строка, дающая выражение как функцию от n_jobs, например, '2*n_jobs'

return_train_scorebool, по умолчанию=False

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

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

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

return_estimatorbool, по умолчанию=False

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

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

return_indicesbool, по умолчанию=False

Возвращать ли индексы train-test, выбранные для каждого разбиения.

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

error_score'raise' или числовое, по умолчанию=np.nan

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

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

Возвращает:
scoresсловарь массивов float формы (n_splits,)

Массив оценок оценщика для каждого запуска перекрестной проверки.

Возвращается словарь массивов, содержащих массивы оценок/времени для каждого скорера. Возможные ключи для этого dict являются:

test_score

Массив оценок для тестовых оценок на каждом фолде cv. Суффикс _score в test_score изменения в конкретной метрике, такой как test_r2 или test_auc если в параметре scoring указано несколько метрик оценки.

train_score

Массив оценок для обучающих выборок на каждом разбиении кросс-валидации. Суффикс _score в train_score изменения в конкретной метрике, такой как train_r2 или train_auc если есть несколько метрик оценки в параметре scoring. Доступно только если return_train_score параметр является True.

fit_time

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

score_time

Время для оценки классификатора на тестовом наборе для каждого разделения cv. (Примечание: время для оценки на обучающем наборе не включается, даже если return_train_score установлено в True).

estimator

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

indices

Позиционные индексы обучающей/тестовой выборки для каждого разбиения кросс-валидации. Возвращается словарь, где ключами являются либо "train" или "test" и связанные значения представляют собой список целочисленных массивов NumPy с индексами. Доступно только если return_indices=True.

Смотрите также

cross_val_score

Запустить кросс-валидацию для оценки по одному метрике.

cross_val_predict

Получить предсказания из каждого разбиения перекрестной проверки для диагностических целей.

sklearn.metrics.make_scorer

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

Примеры

>>> from sklearn import datasets, linear_model
>>> from sklearn.model_selection import cross_validate
>>> diabetes = datasets.load_diabetes()
>>> X = diabetes.data[:150]
>>> y = diabetes.target[:150]
>>> lasso = linear_model.Lasso()

Оценка с использованием одной метрики cross_validate

>>> cv_results = cross_validate(lasso, X, y, cv=3)
>>> sorted(cv_results.keys())
['fit_time', 'score_time', 'test_score']
>>> cv_results['test_score']
array([0.3315057 , 0.08022103, 0.03531816])

Оценка по нескольким метрикам с использованием cross_validate (см. scoring документация параметра для получения дополнительной информации)

>>> scores = cross_validate(lasso, X, y, cv=3,
...                         scoring=('r2', 'neg_mean_squared_error'),
...                         return_train_score=True)
>>> print(scores['test_neg_mean_squared_error'])
[-3635.5 -3573.3 -6114.7]
>>> print(scores['train_r2'])
[0.28009951 0.3908844  0.22784907]