AFAIK, KFold
(и фактически все, что связано с процессом перекрестной проверки) предназначено для предоставления временных наборов данных, чтобы можно было, как вы говорите, использовать их на лету для подгонки и оценки моделей, как показано в Метрики перекрестной проверки в scikit-learn для каждого разделения данных .
Тем не менее, поскольку Kfold.split()
приводит к генератору Python, вы можете использовать сгенерированные индексы, чтобы получить постоянные подмножества, хотя с некоторой ручной работой. Вот пример с данными Бостона:
from sklearn.model_selection import KFold
from sklearn.datasets import load_boston
X, y = load_boston(return_X_y=True)
n_splits = 3
kf = KFold(n_splits=n_splits, shuffle=True)
folds = [next(kf.split(X)) for i in range(n_splits)]
Теперь для каждого k
в range(n_splits)
, folds[k][0]
содержит индексы обучения и folds[k][1]
соответствующие индексы проверки, так что вы можете сделать :
X_train_1 = X[folds[0][0]]
X_test_1 = X[folds[0][1]]
и так далее. Обратите внимание, что те же индексы применимы и к меткам y
.