交叉验证:来自scikit-learn arguments

时间:2018-05-04 14:05:26

标签: python machine-learning scikit-learn cross-validation data-fitting

根据scikit-learn的DOC

  

sklearn.model_selection.cross_val_score(估算器,X,y =无,   groups = None,得分=无,cv =无,n_jobs = 1,verbose = 0,   fit_params = None,pre_dispatch ='2 * n_jobs')

X和y

  

X:array-like要适合的数据。例如,可以是列表,也可以是   阵列。

     

y:array-like,optional,default:None目标变量to   在监督学习的情况下尝试预测。

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

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

您怎么看?

1 个答案:

答案 0 :(得分: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.