Как вы отделяете свои тестовые данные от данных поезда

#python #numpy #tensorflow #deep-learning

#питон #тупица #тензорный поток #глубокое обучение

Вопрос:

привет, ребята, в настоящее время изучают глубокое обучение и машинное обучение

я тоже прочитал некоторые объяснения на github, изучая код

но нет никакого объяснения того, как они отделяют тестовые данные от этого кода(нижняя часть, где есть комментарий # declare data for training and validation, if you want, you can seperate testset from this

 # 1. Creating Datasets # define temporary empty list for load data = [] label = [] Totalnb = 0  # Load Dataset for i in range(n_labels):  nb = 0  # Counting datasets in each labels  for root, dirs, files in os.walk('Progress/DataLatihBaru/'   str(i 1)): # set directory  for name in dirs:  nb = nb   1  print(i,"Label number of Dataset is:",nb)  Totalnb = Totalnb   nb  # by Counting size, cross subfolder and read image data, resize image, and append list   for j in range(nb):  temp = []  for k in range(timesteps):  # name = 'NormalizedCascaded/'   str(i 1)   '/'   str(j 1)   '/'   str(k 1)   '.jpg'  name = 'Progress/DataLatihBaru/'   str(i 1)   '/'   str(j 1)   '/'   'a ('   str(k 1)   ')'   '.jpg'  img = cv2.imread(name)  res = cv2.resize(img, dsize=(img_col, img_row), interpolation=cv2.INTER_CUBIC)  temp.append(res)  label.append(i)   data.append(temp) print("Total Number of Data is",Totalnb)  # Convert List to numpy array, for Keras use Train_label = np.eye(n_labels)[label] # One-hot encoding by np array function Train_data = np.array(data) print("Dataset shape is",Train_data.shape, "(size, timestep, column, row, channel)") print("Label shape is",Train_label.shape,"(size, label onehot vector)") # shuffling dataset for input fit function # if don`t, can`t train model entirely x = np.arange(Train_label.shape[0]) np.random.shuffle(x) # same order shuffle is needed Train_label = Train_label[x] Train_data = Train_data[x]  # declare data for training and validation, if you want, you can seperate testset from this X_train=Train_data[0:Totalnb,:] Y_train=Train_label[0:Totalnb]  

может ли кто-нибудь помочь мне, чтобы я мог понять эту часть того, как я должен отделить данные от теста с небольшим объяснением?

большое вам спасибо !

Ответ №1:

Поскольку Train_label и Train_data уже перетасованы, вы можете просто изменить диапазон для разделения поезда-теста.

 train_size = 0.8 X_train=Train_data[:int(Totalnb * TRAIN_RATIO),:] Y_train=Train_label[:int(Totalnb * TRAIN_RATIO)] X_test=Train_data[int(Totalnb * TRAIN_RATIO):,:] Y_test=Train_label[int(Totalnb * TRAIN_RATIO):]  

Или используйте train_test_split из sklearn :

 from sklearn.model_selection import train_test_split X_train, X_test, Y_train, Y_test = train_test_split(Train_data, Train_label, test_size=0.2)  

Комментарии:

1. Хии Мин спасибо за ваш ответ, Если я могу что-то спросить, из кода , который вы даете в X_train=Train_data[:int(Totalnb * TRAIN_RATIO),:] и т. Д., Можете ли вы объяснить, как я узнаю, сколько потребуется тестовых данных? или я просто меняю «TRAIN_RATIO» столько, сколько хочу?

2. Да, как показано в коде, TRAIN_RATIO будет использоваться для расчета количества записей для использования в обучающем наборе. А остальное будет в тестовом наборе. Вам нужно использовать int() , как будет продукт float .

3. итак, если я хочу использовать 10% для тестовых данных, я ставлю 5% в x и 5% в y?

4. НЕТ, ты пользуешься train_size = 0.9 . X и y должны иметь одинаковую длину в наборе тестов (и обучающем наборе).

5. я вижу, поэтому, например, если я хочу использовать свой размер поезда 90% и размер теста 10%, это будет X_test=Train_data[int(Totalnb * 0.1):,:] для x и y в тесте, большое спасибо за вашу помощь, сэр !