У меня есть обучающий набор и тестовый набор для машинного обучения, однако обучающий набор содержит слишком много строк данных, а тестовый набор — слишком мало. Я подсчитал, что мне нужно переместить 245 строк из тренировочного набора в тестовый набор, чтобы получить лучшее разделение. Как я могу это сделать? У меня всего 5116 строк в тренировочном наборе.
Сначала я рандомизировал строки тренировочного набора, используя этот
train_df = train_df.sample(n = len(train_df)).reset_index(drop=True)
А потом я захотел взять последние 245 строк и переместить их в test_df
Я нашел эти два решения здесь
Фрейм данных Pandas - перемещайте строки из одного фрейма данных в другой
и
Панды перемещают строки из 1 DF в другой DF
Однако они выбирают строки на основе условия, которого у меня нет. Я как бы хочу сделать это так же, как в python, используя срез массивов, если это возможно.
Может быть, как (строки 0-5116-245 и все столбцы, начиная с 0)
transferdata_df = train_df.iloc[5115 - 245:, 0:]
Затем добавьте это к тестовому набору, например
test_df.append(transferdata_df)
Я не уверен, что это правильный путь или нет.
Давайте сделаем
transferdata_df = train_df.iloc[- 245:, 0:]
test_df = test_df.append(transferdata_df)
train_df =train_df.drop(transferdata_df.index)
@erotavlas yw :-) с праздником
спасибо, все работает, также добавлен
test_df = test_df.reset_index(drop=True)
в конце, чтобы сбросить индекс в тестовом фрейме данных.