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
中的折叠数,生成 (train, test) 拆分作为索引数组的可迭代对象。
对于
int
/None
输入,如果估计器是分类器并且y
是二元或多类,则使用StratifiedKFold
。在所有其他情况下,使用KFold
。这些分割器使用shuffle=False
实例化,因此拆分在调用之间将保持一致。请参考 用户指南,了解此处可以使用的各种交叉验证策略。
0.22版本中的更改: 如果
cv
为None
,则默认值从 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]
图库示例#
使用概率主成分分析 (PCA) 和因子分析 (FA) 进行模型选择
使用迭代估算器 (IterativeImputer) 的变体估算缺失值