交叉验证:scikit-learn的cross_val_score函数参数

4

根据scikit-learn的文档

sklearn.model_selection.cross_val_score(estimator, X, y=None, groups=None, scoring=None, cv=None, n_jobs=1, verbose=0, fit_params=None, pre_dispatch=‘2*n_jobs’)

X和y

X:类似数组的数据。可以是列表或数组等类型。

y:类似数组的数据,可选,默认值为None。在监督学习中,要尝试预测的目标变量。

我想知道[X,y]是指X_train和y_train还是指整个数据集。在一些kaggle笔记本中,有些人使用整个数据集,而有些人则使用X_train和y_train。

据我所知,交叉验证只是评估模型,显示您是否过度拟合/欠拟合了数据(它实际上并不训练模型)。因此,在我的观点中,您拥有的数据越多,性能就越好,因此我会使用整个数据集。

你怎么看?


1
这取决于你。在某些情况下,人们会在训练集上完成整个数据分析(包括交叉验证),只有最后才使用测试集。 - Ami Tavory
1个回答

4

模型的表现取决于数据的拆分方式,有时模型无法推广。

这就是为什么我们需要交叉验证。

交叉验证是评估模型的重要步骤。它最大化了用于训练模型的数据量,在训练过程中,模型不仅被训练,而且还在所有可用数据上进行了测试。

我想知道[X,y]是X_train和y_train还是[X,y]应该是整个数据集。

[X,y]应该是整个数据集,因为在内部交叉验证中,数据被拆分成训练数据和测试数据。

假设您使用5折交叉验证(cv = 5)。

我们首先将数据集分成五个组或折。然后,我们保留第一个折作为测试集,对剩余的四个折进行拟合,对测试集进行预测,并计算感兴趣的度量。

接下来,我们保留第二个折作为测试集,对剩余数据进行拟合,对测试集进行预测,并计算感兴趣的度量。

enter image description here

默认情况下,scikit-learn的cross_val_score()函数使用R ^ 2分数作为回归的首选度量。

R ^ 2得分称为确定系数。


cross_val_score 默认使用所提供的评估器的 score() 方法。对于回归评估器, score() 计算 R_squared 值。因此 cross_val_score() 返回这个值。 - Vivek Kumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接