根据scikit-learn的DOC
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要适合的数据 . 例如,可以是列表或数组 . y:array-like,optional,default:None在监督学习的情况下尝试预测的目标变量 .
我想知道[X,y]是X_train和y_train还是[X,y]应该是整个数据集 . 在一些来自kaggle的笔记本中,有些人使用整个数据集,还有一些人使用X_train和y_train .
据我所知,交叉验证只是评估模型并显示您是否过度匹配/不适合您的数据(它实际上并不训练模型) . 然后,在我看来,你拥有的数据越多,性能就越好,所以我会使用整个数据集 .
你怎么看?
1 回答
模型
performance
取决于数据分割的方式,有时模型没有概括的能力 .这就是我们需要交叉验证的原因 .
Cross-validation
是评估模型的关键步骤 . 它最大化了用于训练模型的数据量,因为在训练过程中,模型不仅受过训练,而且还对所有可用数据进行了测试 .[X, y]
应该是整个数据集,因为内部交叉验证将数据拆分为training
数据和test
数据 .假设您使用5次交叉验证(cv = 5) .
我们首先将数据集拆分为五组或折叠 . 然后我们将第一个折叠作为测试集,在剩余的四个折叠上拟合模型,在测试集上预测并计算感兴趣的度量 .
接下来,我们将第二个折叠作为输出测试集,适合剩余数据,在测试集上预测并计算感兴趣的度量 .
默认情况下,scikit-learn的
cross_val_score()
函数使用R^2
得分作为回归选择的度量标准 .R^2
得分称为coefficient of determination.