首页 文章

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

提问于
浏览
2

根据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 回答

  • 2

    模型 performance 取决于数据分割的方式,有时模型没有概括的能力 .

    这就是我们需要交叉验证的原因 .

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

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

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

    假设您使用5次交叉验证(cv = 5) .

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

    接下来,我们将第二个折叠作为输出测试集,适合剩余数据,在测试集上预测并计算感兴趣的度量 .

    enter image description here

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

    R^2 得分称为coefficient of determination.

相关问题