我们是否仅使用cross_val_score使用trainig数据?

时间:2019-04-25 04:07:13

标签: python validation cross-validation

我们是否将训练数据或整个数据提供给cross_val_score?使用cross_val_score时我很困惑。我知道我们将数据划分为训练和测试,并向模型提供训练数据。

from sckit learn

这是sckit-learn文档中的示例,使用了整个数据。

cross_val_score(model, iris.data, iris.target,scoring=scorer, cv=5)

2 个答案:

答案 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)