cross_validate#
- sklearn.model_selection.cross_validate(estimator, X, y=None, *, groups=None, scoring=None, cv=None, n_jobs=None, verbose=0, fit_params=None, params=None, pre_dispatch='2*n_jobs', return_train_score=False, return_estimator=False, return_indices=False, error_score=nan)#
评估指标通过交叉验证并记录拟合/评分时间。
更多信息请参阅 用户指南 。
- Parameters:
- estimator实现 ‘fit’ 方法的估计器对象
用于拟合数据的对象。
- X{array-like, sparse matrix},形状为 (n_samples, n_features)
用于拟合的数据。可以是例如列表或数组。
- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的 array-like,默认=None
在监督学习的情况下,目标变量尝试预测。
- groups形状为 (n_samples,) 的 array-like,默认=None
在将数据集拆分为训练/测试集时使用的样本组标签。仅在与 “Group” cv 实例(例如
GroupKFold
)结合使用时使用。Changed in version 1.4:
groups
只能在未通过sklearn.set_config(enable_metadata_routing=True)
启用元数据路由的情况下传递。启用路由时,通过params
参数与其他元数据一起传递groups
。例如:cross_validate(..., params={'groups': groups})
。- scoringstr, callable, list, tuple, 或 dict,默认=None
策略用于评估测试集上交叉验证模型的性能。
如果
scoring
表示单个分数,可以使用:单个字符串(参见 scoring_parameter );
返回单个值的可调用对象(参见 从指标函数定义您的评分策略 )。
如果
scoring
表示多个分数,可以使用:唯一字符串的列表或元组;
返回字典的可调用对象,其中键是指标名称,值是指标分数;
以指标名称为键,可调用对象为值的字典。
参见 指定多个度量标准进行评估 示例。
- cvint, cross-validation 生成器或可迭代对象,默认=None
确定交叉验证拆分策略。 cv 的可能输入包括:
None,使用默认的 5 折交叉验证,
int,指定
(Stratified)KFold
中的折数,生成 (train, test) 拆分的可迭代对象,作为索引数组。
对于 int/None 输入,如果估计器是分类器且
y
是二分类或多分类,则使用StratifiedKFold
。在所有其他情况下,使用KFold
。这些拆分器以shuffle=False
实例化,因此拆分将在调用之间保持一致。参见 用户指南 以了解可以使用的各种交叉验证策略。
Changed in version 0.22:
cv
默认值如果为 None,从 3 折改为 5 折。- n_jobsint,默认=None
并行运行的作业数。在交叉验证拆分上并行化估计器训练和评分计算。
None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有处理器。参见 Glossary 了解更多详情。- verboseint,默认=0
详细级别。
- fit_paramsdict,默认=None
传递给估计器 fit 方法的参数。
Deprecated since version 1.4: 此参数已弃用,将在 1.6 版本中移除。请使用
params
代替。- paramsdict,默认=None
传递给底层估计器的
fit
、评分器和 CV 拆分器的参数。Added in version 1.4.
- pre_dispatchint 或 str,默认=’2*n_jobs’
控制并行执行期间分派的作业数。减少此数量在避免分派的作业数超过 CPU 处理能力时内存消耗爆炸的情况下很有用。此参数可以是:
一个整数,给出分派的总作业数
一个字符串,给出 n_jobs 的函数表达式,如 ‘2*n_jobs’
- return_train_scorebool,默认=False
是否包含训练分数。 计算训练分数用于了解不同参数设置如何影响过拟合/欠拟合权衡。 然而,计算训练集上的分数在计算上可能是昂贵的,并且严格来说不需要选择产生最佳泛化性能的参数。
Added in version 0.19.
Changed in version 0.21: 默认值从
True
改为False
- return_estimatorbool,默认=False
是否返回每个拆分上拟合的估计器。
Added in version 0.20.
- return_indicesbool,默认=False
是否返回每个拆分选择的训练-测试索引。
Added in version 1.3.
- error_score‘raise’ 或 numeric,默认=np.nan
在估计器拟合过程中发生错误时分配给分数的值。 如果设置为 ‘raise’,则引发错误。 如果给定数值,则引发 FitFailedWarning。
Added in version 0.20.
- Returns:
- scores形状为 (n_splits,) 的浮点数组字典
估计器在每次交叉验证运行中的分数数组。
返回一个包含每个评分器的分数/时间数组的字典。此
dict
的可能键包括:test_score
每个 cv 拆分的测试分数数组。
test_score
中的后缀_score
在评分参数中有多个评分指标时会变为特定指标,如test_r2
或test_auc
。train_score
每个 cv 拆分的训练分数数组。
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
时可用。
See also
cross_val_score
为单个指标评估运行交叉验证。
cross_val_predict
获取用于诊断目的的交叉验证每个拆分的预测。
sklearn.metrics.make_scorer
从性能指标或损失函数创建评分器。
Examples
>>> from sklearn import datasets, linear_model >>> from sklearn.model_selection import cross_validate >>> from sklearn.metrics import make_scorer >>> from sklearn.metrics import confusion_matrix >>> from sklearn.svm import LinearSVC >>> 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]