В рамках перекрестной проверки необходимо разбить массив поездов на N сгибов. А затем для каждого раза запустить эксперимент. Последнее означает, что мне нужно объединить N-1 сгибы в один массив и использовать оставшиеся сгибы для проверки.
Предполагая, что у меня есть двоичный_трейн_X в качестве исходного массива и я хочу разбить его на 5 сгибов. Я получил код, который работает:
num_folds = 5
train_folds_X = []
# Split the training data in folds
step = int(binary_train_X.shape[0] / num_folds)
for i in range(num_folds):
train_folds_X.append(binary_train_X[i*step:(i+1)*step])
# Prepare train and test arrays
for i in range(num_folds):
if i == 0:
train_temp_X = np.concatenate((train_folds_X[1:]))
elif i == num_folds - 1:
train_temp_X = np.concatenate((train_folds_X[0:(num_folds - 1)]))
else:
train_temp_X1 = np.concatenate((train_folds_X[0:i]))
train_temp_X2 = np.concatenate((train_folds_X[(i+1):(num_folds)]))
train_temp_X = np.concatenate((train_temp_X1, train_temp_X2))
test_temp_X = train_folds_X[i]
# Run classifier based on train_temp_X and test_temp_X
...
pass
Вопрос - как это сделать более элегантно?