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

Cross validation: cross_val_score function from scikit-learn arguments

根据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 : array-like The data to fit. Can be for example a list, or an array.

y : array-like, optional, default: None The target variable to try to predict in the case of supervised learning.

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

据我所知,交叉验证只是评估模型并显示您是否 overfit/underfit 您的数据(它实际上并不训练模型)。然后,在我看来,你拥有的数据越多越好,所以我会使用整个数据集。

你怎么看?

模型 performance 取决于数据的拆分方式,有时模型没有泛化能力。

所以这就是我们需要交叉验证的原因。

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

I am wondering whether [X,y] is X_train and y_train or [X,y] should be the whole dataset.

[X, y] 应该是整个数据集,因为内部交叉验证将数据拆分为 training 数据和 test 数据。

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

我们首先将数据集分成五组或五折。然后我们将第一个折叠作为测试集,在剩余的四个折叠上拟合模型,在测试集上进行预测并计算感兴趣的指标。

接下来,我们将第二次折叠作为测试集,拟合剩余数据,预测测试集并计算感兴趣的指标。

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

R^2分数就叫coefficient of determination.