У меня есть набор данных, который я получил из двух разных источников.Я объединил их и сделал окончательный набор данных.Я применяю перекрестную проверку в k-кратном порядке и хочу убедиться, что для разделения на поезд-тест каждого фолда должны содержаться записи из обоих источников.Ниже приведен пример кода:
from sklearn.utils import shuffle
from sklearn.model_selection import KFold, StratifiedKFold
import numpy as np
datasource1=np.array([1,2,3,4,5,6,7,8,9,10,11])
datasource1_label=np.array([0,1,0,1,0,1,0,1,0,1,0])#0 for odd and 1 for even
datasource2=np.array([12,13,14,15])
datasource2_label=np.array([1,0,1,0])#0 for odd and 1 for even
merge_data=np.concatenate((datasource1,datasource2))
merge_label=np.concatenate((datasource1_label, datasource2_label))
x,y = shuffle(merge_data,merge_label)
kf = KFold(n_splits=3,shuffle=False)
kf.get_n_splits()
train_index_list=[];test_index_list=[]
for train_index, test_index in kf.split(x,y):
x_train, x_test = x[train_index], x[test_index]
y_train, y_test = y[train_index], y[test_index]
train_index_list.append(train_index)
test_index_list.append(test_index)
Я не упоминаю random_state для shuffle и kfold, потому что я пробовал разные эксперименты.Кабина n_split
может быть любой, например, 5-кратной или 10-кратной.иногда может случиться так, что любой (или более чем один) фолд не содержит значения из второго набора данных или аналогичного для тестовых данных.