cross_validate#

sklearn.model_selection.cross_validate(estimator, X, y=None, *, groups=None, scoring=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' 方法的估计器对象

用于拟合数据的对象。

Xshape 为 (n_samples, n_features) 的 {array-like, sparse matrix}

用于拟合的数据。例如可以是列表或数组。

y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组对象,默认=None

在监督学习中尝试预测的目标变量。

groups形状为 (n_samples,) 的类数组对象,默认=None

在将数据集拆分为训练/测试集时使用的样本组标签。仅与“Group”cv 实例(例如 GroupKFold)结合使用。

版本 1.4 中已更改:groups 仅在通过 sklearn.set_config(enable_metadata_routing=True) 启用元数据路由时才能传递。启用路由后,请通过 params 参数与其他元数据一起传递 groups。例如: cross_validate(..., params={'groups': groups})

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

用于在交叉验证折叠中评估 estimator 性能的策略。

如果 scoring 代表单个分数,可以使用

如果 scoring 代表多个分数,可以使用

  • 一个包含唯一字符串的列表或元组;

  • 一个返回字典的可调用对象,其中键是度量名称,值是度量分数;

  • 一个字典,其中键是指标名称,值是可调用对象。

有关示例,请参见 为评估指定多个指标

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

确定交叉验证拆分策略。cv 的可能输入包括

  • None,使用默认的 5 折交叉验证,

  • int,指定 (Stratified)KFold 中的折叠数,

  • CV 分割器,

  • 一个可迭代对象,产生索引数组形式的 (训练集, 测试集) 拆分。

对于 int/None 输入,如果估计器是分类器且 y 是二元或多类别,则使用 StratifiedKFold。在所有其他情况下,使用 KFold。这些分割器以 shuffle=False 实例化,因此分割在不同调用中将相同。

有关此处可使用的各种交叉验证策略,请参阅 用户指南

版本 0.22 中已更改:如果为 None,cv 默认值从 3 折更改为 5 折。

n_jobsint, default=None

并行运行的作业数。估计器的训练和得分计算会在交叉验证折叠上并行化。None 表示 1,除非在 joblib.parallel_backend 上下文中。-1 表示使用所有处理器。有关更多详细信息,请参阅 术语表

verboseint, default=0

详细程度。

paramsdict, 默认=None

传递给底层估计器的 fit、评分器和 CV 分割器的参数。

1.4 版本新增。

pre_dispatchint or str, default=’2*n_jobs’

控制并行执行期间调度的作业数量。当调度的作业多于 CPU 可处理的数量时,减少此数字有助于避免内存消耗激增。此参数可以为

  • 一个 int 值,给出生成的总作业的确切数量。

  • 一个 str,给出 n_jobs 函数的表达式,例如 ‘2*n_jobs’。

return_train_scorebool, default=False

是否包含训练得分。计算训练得分用于了解不同的参数设置如何影响过拟合/欠拟合的权衡。然而,在训练集上计算得分可能计算成本很高,并且严格来说不是选择产生最佳泛化性能的参数所必需的。

Added in version 0.19.

版本 0.21 中已更改:默认值从 True 更改为 False

return_estimatorbool, default=False

是否返回每个折叠上拟合的估计器。

0.20 版本新增。

return_indicesbool, default=False

是否返回为每个折叠选择的训练-测试索引。

在版本 1.3 中新增。

error_score‘raise’ or numeric, default=np.nan

如果估计器拟合中发生错误,分配给分数的值。如果设置为 'raise',则会引发错误。如果给定一个数值,则会引发 FitFailedWarning。

0.20 版本新增。

返回:
scoresdict of float arrays of shape (n_splits,)

估计器在每次交叉验证运行中的得分数组。

将返回一个包含每个评分器的得分/时间数组的字典。此 dict 的可能键包括:

test_score

每个 CV 折叠上的测试得分数组。如果 `scoring` 参数中有多个评分指标,则 `test_score` 中的后缀 `_score` 将更改为特定的指标,例如 `test_r2` 或 `test_auc`。

train_score

每个 CV 折叠上的训练得分数组。如果 `scoring` 参数中有多个评分指标,则 `train_score` 中的后缀 `_score` 将更改为特定的指标,例如 `train_r2` 或 `train_auc`。仅当 `return_train_score` 参数为 `True` 时才可用。

fit_time

每次 CV 折叠中训练集上估计器拟合的时间。

score_time

每次 CV 折叠中测试集上估计器评分的时间。(注意:即使 `return_train_score` 设置为 `True`,训练集上的评分时间也不包含在内)。

estimator

每个 CV 折叠的估计器对象。仅当 `return_estimator` 参数设置为 `True` 时才可用。

indices

每个 CV 折叠的训练/测试位置索引。返回一个字典,其键为 `"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]