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)[source]#

通过交叉验证评估分数。

更多信息请阅读用户指南

参数:
estimator实现“fit”方法的估计器对象

用于拟合数据的对象。

X形状为 (n_samples, n_features) 的 {数组、稀疏矩阵}

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

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

在监督学习的情况下,尝试预测的目标变量。

groups形状为 (n_samples,) 的数组,默认为 None

将数据集拆分为训练集/测试集时使用的样本分组标签。仅与“分组” cv 实例(例如,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),该函数应仅返回单个值。

类似于 cross_validate,但只允许使用单个指标。

如果为 None,则使用估计器的默认评分器(如果可用)。

cvint、交叉验证生成器或可迭代对象,默认为 None

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

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

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

  • CV 分割器,

  • 生成 (train, test) 拆分作为索引数组的可迭代对象。

对于 int/None 输入,如果估计器是分类器并且 y 是二元或多类,则使用 StratifiedKFold。在所有其他情况下,使用 KFold。这些分割器使用 shuffle=False 实例化,因此拆分在调用之间将保持一致。

请参考 用户指南,了解此处可以使用的各种交叉验证策略。

0.22版本中的更改: 如果 cvNone,则默认值从 3 折更改为 5 折。

n_jobsint,默认为 None

要并行运行的作业数。估计器的训练和分数的计算将在交叉验证拆分上并行化。None 表示 1,除非在 joblib.parallel_backend 上下文中。-1 表示使用所有处理器。更多详细信息,请参见 词汇表

verboseint,默认为 0

详细程度。

paramsdict,默认为 None

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

1.4版本中添加。

pre_dispatchint 或 str,默认为 '2*n_jobs'

控制在并行执行期间分派的作业数量。减少此数量有助于避免在分派的作业数超过 CPU 可处理的数量时内存消耗激增。此参数可以是

  • None,在这种情况下,所有作业都立即创建和生成。对于轻量级和快速运行的作业,请使用此方法,以避免由于按需生成作业而造成的延迟

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

  • 一个 str,给出作为 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]