Scikit-learn - 如何对 CV 对象使用单个静态验证集?
Scikit-learn - how to use single static validation set for CV object?
在 Scikit-learn 中,RandomSearchCV
和 GridSearchCV
需要 cv
参数的交叉验证对象,例如GroupKFold
或来自 sklearn.model_selection
的任何其他 CV 分离器。
但是,如何使用单一的、static 验证集?我有非常大的训练集,大验证集,我只需要 CV 对象的接口,而不是整个交叉验证。
具体来说,我正在使用 Scikit-optimize 和 BayesSearchCV
(docs),它需要 CV 对象(与常规 Scikit-learn SearchCV
对象相同的接口)。我想使用我选择的验证集,而不是整个 CV。
scikit-learn
选型对象的文档,如GridSearchCV
,可能更清楚如何实现这一目标:
cv: int, cross-validation generator or an iterable, default=None
- ...
- An iterable yielding (train, test) splits as arrays of indices.
所以你需要训练和测试样本的索引数组作为一个元组,然后将它们包装在一个可迭代的对象中,例如列表:
train_indices = [...] # indices for training
test_indices = [...] # indices for testing
cv = [(train_indices, test_indices)]
将这个用单个元组定义的cv
传递给模型选择对象,它将始终使用相同的样本进行训练和测试。
在 Scikit-learn 中,RandomSearchCV
和 GridSearchCV
需要 cv
参数的交叉验证对象,例如GroupKFold
或来自 sklearn.model_selection
的任何其他 CV 分离器。
但是,如何使用单一的、static 验证集?我有非常大的训练集,大验证集,我只需要 CV 对象的接口,而不是整个交叉验证。
具体来说,我正在使用 Scikit-optimize 和 BayesSearchCV
(docs),它需要 CV 对象(与常规 Scikit-learn SearchCV
对象相同的接口)。我想使用我选择的验证集,而不是整个 CV。
scikit-learn
选型对象的文档,如GridSearchCV
,可能更清楚如何实现这一目标:
cv: int, cross-validation generator or an iterable, default=None
- ...
- An iterable yielding (train, test) splits as arrays of indices.
所以你需要训练和测试样本的索引数组作为一个元组,然后将它们包装在一个可迭代的对象中,例如列表:
train_indices = [...] # indices for training
test_indices = [...] # indices for testing
cv = [(train_indices, test_indices)]
将这个用单个元组定义的cv
传递给模型选择对象,它将始终使用相同的样本进行训练和测试。