Разбить набор данных на два не избыточных массива? - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть пустой массив "my_data".Я пытаюсь разбить этот набор данных случайным образом.Однако, когда я делаю это, используя следующий код, я получаю массив "train" и массив "test".У массива поездов и тестового массива есть несколько строк в столбце.

training_idx = np.random.randint(my_data.shape[0], size=split_size)
test_idx = np.random.randint(my_data.shape[0], size=len(my_data)-split_size)
train, test = my_data[training_idx,:], my_data[test_idx,:]

Мое намерение состоит в том, чтобы сначала найти массив поездов в случайном порядке, а затем все оставшиеся в my_data строки, которые не находятся в массиве поездов, чтобы быть частью тестамассив.

Есть ли в numpy способ сделать это?(Я воздерживаюсь от использования sklearn для разделения моих данных)

Я ссылался на этот пост здесь, чтобы попасть сюда с моим набором данных. Как разделить / разбить набор данных на обучающие и тестовые наборы данных, например, для перекрестной проверки?

Если я кодирую по логике этого поста, я получаю наборы данных для обучения и тестирования, где тренируются иtest содержит несколько лишних строкЯ намерен создать наборы данных для обучения и тестирования, в которых нет общих рядов.

1 Ответ

0 голосов
/ 07 февраля 2019

После этого ответа вы можете сделать:

train_idx = np.random.randint(my_data.shape[0], size=split_size)    
mask = np.ones_like(my_data, dtype=bool)
mask[train_idx] = False
train, test = my_data[~mask], my_data[mask]

Хотя, более естественным способом было бы срезать перестановку ваших данных, как предложил Пуджан.

permuted = np.random.permutation(my_data)
train, test = permuted[:split_size], permuted[split_size:]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...