Как разделить наборы данных на определенные числа?

#python #tensorflow #machine-learning #keras #dataset

#python #тензорный поток #машинное обучение #keras #набор данных

Вопрос:

Я использую набор данных keras MNIST, который поставляется с обучающим набором из 60 тыс. изображений и тестовым набором из 10 тыс. изображений. В моем домашнем задании мне предлагается разделить обучающий набор на 50 тыс. для обучения и 10 тыс. для проверки. Я немного не уверен в том, как это сделать и / или подойти к этому, поскольку мне раньше не приходилось разбивать набор данных на определенные числа, подобные этому. Это код, который у меня есть до сих пор:

 import numpy as np
import scipy
import matplotlib.pyplot as plt
from keras.datasets import mnist
from util import func_confusion_matrix

# load (downloaded if needed) the MNIST dataset
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# transform each image from 28 by28 to a 784 pixel vector
pixel_count = x_train.shape[1] * x_train.shape[2]
x_train = x_train.reshape(x_train.shape[0], pixel_count).astype('float32')
x_test = x_test.reshape(x_test.shape[0], pixel_count).astype('float32')

# normalize inputs from gray scale of 0-255 to values between 0-1
x_train = x_train / 255
x_test = x_test / 255
 

Ответ №1:

вы можете напрямую использовать пакет sklearn:

 import numpy as np
import scipy
import matplotlib.pyplot as plt
from keras.datasets import mnist
from util import func_confusion_matrix

# load (downloaded if needed) the MNIST dataset
(x_train, y_train), (x_test, y_test) = mnist.load_data()

from sklearn.model_selection import train_test_split
x_train,x_val,y_train,y_val = train_test_split(x_train,y_train,test_size=0.1)

# here test_size=0.1 means you are selecting 10% of data for split.
 

Теперь у вас есть все данные в переменных x_train, x_test, x_val и y_train, y_test,y_val.

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

1. Итак, 10% от 60 кб войдут в набор проверки?

2. ДА. Вы также можете прочитать определение функции отсюда

Ответ №2:

В этом конкретном случае данные mnist предварительно перемешиваются, поэтому вы можете просто использовать индексацию, чтобы выбрать последние 10 000 наблюдений обучающего набора в качестве набора проверки.

 from tensorflow.keras.datasets import mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()

y_val = y_train[-10000:]
x_val = x_train[-10000:]

x_train = x_train[:-10000]
y_train = y_train[:-10000]