交叉验证:来自 scikit-learn 参数的 cross_val_score 函数
Posted
技术标签:
【中文标题】交叉验证:来自 scikit-learn 参数的 cross_val_score 函数【英文标题】:Cross validation: cross_val_score function from scikit-learn arguments 【发布时间】:2018-10-15 01:19:59 【问题描述】:根据 scikit-learn 的文档
sklearn.model_selection.cross_val_score(估计器,X,y=None, 组=无,评分=无,cv=无,n_jobs=1,详细=0, fit_params=None, pre_dispatch='2*n_jobs')
X 和 y
X : array-like 适合的数据。例如可以是一个列表,或者一个 数组。
y : 类数组,可选,默认值:None 目标变量 尝试在监督学习的情况下进行预测。
我想知道 [X,y] 是否是 X_train 并且 y_train 或 [X,y] 应该是整个数据集。在 kaggle 的一些笔记本中,有些人使用整个数据集,有些人使用 X_train 和 y_train。
据我所知,交叉验证只是评估模型并显示您是否过拟合/欠拟合数据(它实际上并没有训练模型)。然后,在我看来,你拥有的数据越多,性能越好,所以我会使用整个数据集。
你怎么看?
【问题讨论】:
这取决于你。在某些情况下,人们在训练集上进行整个数据分析(包括交叉验证),最终只使用测试集。 【参考方案1】:模型performance
取决于数据的拆分方式,有时模型没有泛化能力。
这就是我们需要交叉验证的原因。
Cross-validation
是评估模型的关键步骤。它最大限度地增加了用于训练模型的数据量,因为在训练过程中,模型不仅经过训练,而且还在所有可用数据上进行了测试。
我想知道 [X,y] 是否是 X_train 和 y_train 或 [X,y] 应该是 整个数据集。
[X, y]
应该是整个数据集,因为内部交叉验证将数据拆分为 training
数据和 test
数据。
假设您使用 5 折交叉验证 (cv = 5)。
我们首先将数据集分成五组或折叠。然后我们将第一个折叠作为测试集,在剩余的四个折叠上拟合模型,在测试集上进行预测并计算感兴趣的度量。
接下来,我们将第二折作为测试集,拟合剩余数据,在测试集上进行预测并计算感兴趣的指标。
默认情况下,scikit-learn 的 cross_val_score()
函数使用 R^2
分数作为回归选择的指标。
R^2
分数称为coefficient of determination.
【讨论】:
cross_val_score
默认使用提供的估计器的score()
方法。对于回归量估计器,score()
计算 R_squared 值。因此cross_val_score()
给出了这个。以上是关于交叉验证:来自 scikit-learn 参数的 cross_val_score 函数的主要内容,如果未能解决你的问题,请参考以下文章
在 scikit-learn 中跨多个模型进行交叉验证时如何保持相同的折叠?
在 SciKit-Learn 中使用 XGBoost 交叉验证进行网格搜索和提前停止
评估 scikit-learn GridSearchCV 中交叉验证分数的平均值、标准差
使用 Scikit-Learn GridSearchCV 与 PredefinedSplit 进行交叉验证 - 可疑的交叉验证结果