我们是否将训练数据或整个数据提供给cross_val_score?使用cross_val_score时我很困惑。我知道我们将数据划分为训练和测试,并向模型提供训练数据。
这是sckit-learn文档中的示例,使用了整个数据。
cross_val_score(model, iris.data, iris.target,scoring=scorer, cv=5)
答案 0 :(得分:0)
您传递了整个训练数据,sklearn
将根据cv
参数对其进行拆分。
输出将来自每次迭代自动创建的测试部分。
答案 1 :(得分:0)
cross_val_score用于以比典型的火车测试拆分更可靠的方式估算模型的准确性。您应该输入其中的所有数据,这将对火车进行必要的测试分割。
如果需要交叉验证超参数,则应运行嵌套交叉验证,其中一个外部循环可估计模型的准确性,而一个内部循环可获取最佳参数,以将外部循环的训练集拆分为train和验证集。该过程应类似于:
Outer loop:
Split train - test
Inner loop:
Fix parameters
Split train in train2 - validation
Train with train2 set
Score with validation set
Repeat Inner loop for all parameters
Train with train set and best parameters from inner loop
Score with test
Repeat outer loop until CV ends
Return test scores
幸运的是,sklearn允许将GridSearchCV嵌套在cross_val_score中。
validation = GridSearchCV(estimator, param_grid)
score = cross_val_score(validation, X, y)