Перемешать и разделить 2 массива с обломками, чтобы сохранить их порядок относительно друг друга - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть 2 массива X и Y, которые имеют форму X: [4750, 224, 224, 3] и Y: [4750,1].

X - это обучающий набор данных, а Y - правильныйметка вывода для каждой записи.

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

Как мне достичь вышеуказанной цели?

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

Вы также можете использовать scikit-learn train_test_split, чтобы разделить ваши данные, используя всего 2 строки кода:

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.33)
0 голосов
/ 16 октября 2018

sklearn.model_selection.train_test_split - хороший выбор!

Но для создания своего собственного

import numpy as np

def my_train_test_split(X, Y, train_ratio=0.8):
    """return X_train, Y_train, X_test, Y_test"""
    n = X.shape[0]
    split = int(n * train_ratio)
    index = np.arange(n)
    np.random.shuffle(index)
    return X[index[:split]], Y[index[:split]], X[index[split:]], Y[index[split:]]
0 голосов
/ 23 сентября 2018

Вот как я бы это сделал

def split(x, y, train_ratio=0.7):
  x_size = x.shape[0]
  train_size = int(x_size * train_ratio)
  test_size = x_size - train_size
  train_indices = np.random.choice(x_size, size=train_size, replace=False)
  mask = np.zeros(x_size, dtype=bool)
  mask[train_indices] = True
  x_train, y_train = x[mask], y[mask]
  x_test, y_test = x[~mask], y[~mask]
  return (x_train, y_train), (x_test, y_test)

Я просто выбираю необходимое количество индексов, которое мне нужно (случайным образом) для моего набора поездов, остальные будут для набора тестов.

Затем используйте маску, чтобы выбрать поезд и проверить образцы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...