Generación de los bloques de entrenamiento y validación

Comencemos ahora la implementación de la red neuronal cargando el dataset MNIST que la va a alimentar:

import pandas as pd

mnist = pd.read_csv("mnist.csv", header = None)
y = mnist.pop(0)
X = mnist / 255

Obsérvese que, a diferencia de los ejemplos vistos hasta ahora, el DataFrame X conteniendo las características predictivas se divide entre 255 para dejar todos sus valores entre 0 y 1, lo que -según veremos más adelante- resulta más que conveniente para asegurar el correcto funcionamiento de la red neuronal.

Vamos a dividir nuestro dataset en dos bloques: uno para entrenar la red y otro para validarla. De las 60.000 muestras de las que disponemos, vamos a dedicar 55.000 al primer bloque y 5.000 al segundo:

from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(X, y, test_size = 5000)

Por defecto, la función train_test_split de sklearn desordena las estructuras que recibe como parámetros (X e y).

Este código se dará por supuesto de ahora en adelante.