Разделение данных для Машиного обучение

введите сюда описание изображенияУ меня есть датафрэйм состоящий из 8640 строк и 11 столбцов. Первая строка состоит из 8 уникальных данных а второй столбец из 6 уникальных данных. Первый столбец [-7; 0] шаг 1, второй столбец [0; 10] шаг 2. И мне нужно разделить данные таким образом что бы для каждого элемента первого столбца, 2 элемента второго столбца в тестовый набор а 4 элемента второго столбца для тренировочного набора.

inputs_train, inputs_test, outputs_train, outputs_test = train_test_split(inputs, outputs, test_size = 0.33, random_state = 0)

Это не подходит поскольку мне не нужно рандомный деление. И я пробивал

 train_pct_index = int(0.833 * len(inputs))
 inputs_train, inputs_test = inputs[train_pct_index:], inputs[:train_pct_index]
 outputs_train, outputs_test =outputs[train_pct_index:], outputs[:train_pct_index] 

Но здесь оно разделять всю дату на две части.


Ответы (1 шт):

Автор решения: CrazyElf

Если я правильно понял, просто делаете условие на числа во второй колонке.

Для Pandas DataFrame:

test_filter = inputs['col2'] < 4
inputs_test = inputs.loc[test_filter]
inputs_train = inputs.loc[~test_filter]

Для Numpy array:

condition = arr[:,1] < 4
inputs_test = inputs[condition]
inputs_train = inputs[~condition]

По доп. вопросу из комментария:

condition = np.isin(arr[:,1], (4, 6))
→ Ссылка