cross_val_score#
- sklearn.model_selection.cross_val_score(estimator, X, y=None, *, groups=None, scoring=None, cv=None, n_jobs=None, verbose=0, params=None, pre_dispatch='2*n_jobs', error_score=nan)[源]#
通过交叉验证评估分数。
在用户指南中阅读更多内容。
- 参数:
- estimator实现“fit”方法的估计器对象
用于拟合数据的对象。
- X形状为 (n_samples, n_features) 的类数组或稀疏矩阵
要拟合的数据。例如可以是列表或数组。
- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组,默认为 None
在监督学习中尝试预测的目标变量。
- groups形状为 (n_samples,) 的类数组,默认为 None
用于将数据集拆分为训练/测试集时样本的组标签。仅与“组”交叉验证实例(例如,
GroupKFold
)结合使用。1.4 版中的变更: 如果未通过
sklearn.set_config(enable_metadata_routing=True)
启用元数据路由,则只能传递groups
。当路由启用时,请通过params
参数与其他元数据一起传递groups
。例如:cross_val_score(..., params={'groups': groups})
。- scoringstr 或可调用对象,默认为 None
用于评估
估计器
在交叉验证划分上的性能的策略。str:有关选项,请参阅字符串名称评分器。
可调用对象:一个具有签名
scorer(estimator, X, y)
的评分器可调用对象(例如,函数),它应该只返回一个值。有关详细信息,请参阅可调用评分器。None
:使用估计器
的默认评估标准。
与在
cross_validate
中使用scoring
类似,但只允许使用单个指标。- cvint,交叉验证生成器或可迭代对象,默认为 None
确定交叉验证的划分策略。cv 的可能输入有:
None
,使用默认的 5 折交叉验证,int,指定
(Stratified)KFold
中的折叠数,一个可迭代对象,生成 (训练集,测试集) 划分作为索引数组。
对于
int
/None
输入,如果估计器是分类器且y
是二元或多类,则使用StratifiedKFold
。在所有其他情况下,使用KFold
。这些分割器使用shuffle=False
实例化,因此在不同调用中分割将保持一致。有关可在此处使用的各种交叉验证策略,请参阅用户指南。
0.22 版中的变更:
cv
的默认值(如果为None
)从 3 折更改为 5 折。- n_jobsint,默认为 None
并行运行的作业数。估计器训练和分数计算在交叉验证划分上并行化。
None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有处理器。有关更多详细信息,请参阅术语表。- verboseint,默认为 0
详细程度。
- params字典,默认为 None
要传递给底层估计器的
fit
方法、评分器和交叉验证分割器的参数。1.4 版新增。
- pre_dispatchint 或 str,默认为 ‘2*n_jobs’
控制并行执行期间分派的作业数。当分派的作业数超过 CPU 可处理的作业数时,减少此数量有助于避免内存消耗的爆炸性增长。此参数可以是:
None
,在这种情况下,所有作业会立即创建和启动。将其用于轻量级和快速运行的作业,以避免因按需启动作业而造成的延迟。一个整数,表示启动的总作业的精确数量
一个字符串,给出作为 n_jobs 函数的表达式,如 ‘2*n_jobs’
- error_score‘raise’ 或数值,默认为 np.nan
如果估计器拟合发生错误,则分配给分数的值。如果设置为“raise”,则抛出错误。如果给定一个数值,则会引发 FitFailedWarning。
0.20 版新增。
- 返回:
- scores形状为 (len(list(cv)),) 的浮点数 ndarray
估计器在每次交叉验证运行中的分数数组。
另请参阅
cross_validate
用于对多个指标运行交叉验证,并返回训练分数、拟合时间和评分时间。
cross_val_predict
从交叉验证的每次划分中获取预测结果,用于诊断。
sklearn.metrics.make_scorer
从性能指标或损失函数创建评分器。
示例
>>> from sklearn import datasets, linear_model >>> from sklearn.model_selection import cross_val_score >>> diabetes = datasets.load_diabetes() >>> X = diabetes.data[:150] >>> y = diabetes.target[:150] >>> lasso = linear_model.Lasso() >>> print(cross_val_score(lasso, X, y, cv=3)) [0.3315057 0.08022103 0.03531816]