使用cross_val_score时我们只使用训练数据吗?

问题描述 投票:0回答:2

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

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

cross_val_score(model, iris.data, iris.target,scoring=scorer, cv=5)
python validation cross-validation
2个回答
1
投票

cross_val_score 用于以比典型的训练-测试分割更稳健的方式估计模型的准确性。您应该将所有数据输入其中,它将进行必要的训练-测试分割。

如果您需要交叉验证超参数,那么您应该运行嵌套交叉验证,使用一个外循环来估计模型的准确性,使用一个内循环来获取最佳参数,从而将外循环的训练集分割为训练集和验证集。程序应该是这样的:

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)

0
投票

您传递整个训练数据,

sklearn
将根据
cv
参数对其进行分割。

输出将来自每次迭代时自动创建的测试部分。

© www.soinside.com 2019 - 2024. All rights reserved.