MNIST es una base de datos de imágenes digitales escritas a mano, y cada imagen es de 28×28 = 784 píxeles por cada imagen. Los datos del Reconocedor de Digitos dados tienen 42000 imágenes de entrenamiento y 28000 imágenes de prueba. Los datos se representan en formato CSV, en el que la primera columna es la etiqueta y las 784 columnas restantes representan los valores de los píxeles. Cada fila representa imágenes individuales. Los datos de prueba contienen 784 columnas. La tarea es predecir las etiquetas para las 28000 imágenes de prueba; las etiquetas son los dígitos 0-9.
1. Preparación de los datos
A. Datos de carga
Lea los datos de la imagen almacenados en formato CSV. La función pandas read_csv() se usa para leer el archivo CSV.

12train = pd.read_csv("train.csv")test=pd.read_csv("test.csv")
pitón
Luego, prepara los datos para el entrenamiento dejando caer la columna de la etiqueta. Los datos de entrenamiento contienen sólo valores de píxeles.
123X_train = train.drop(["label"],axis =1)Y_train = train["label"]X_test=test
pitón
B. Análisis exploratorio de datos
Después de leer los datos, comprueba la calidad de los mismos, ¿puedes encontrar cómo se distribuyen las 10 clases en las imágenes de entrenamiento? ¿Puedes encontrar cuántos valores faltantes están presentes? El siguiente código cuenta cuántas muestras están presentes para cada clase.
12g = sns.countplot(Y_train)Y_train.value_counts()
pitón
A continuación, calcularemos el número de valores nulos en los datos de entrenamiento y pruebas. Esto nos dirá si hay alguna imagen corrupta en los datos. En este caso, no hay valores nulos, por lo que la calidad de los datos es buena.
1X_train.isull().any().describe()
pitón
1X_test.isull().any().describe()
pitón
C. Normalización
Esta es una imagen en escala de grises con posibles valores de intensidad de píxeles de 0-255. Para que los valores de intensidad de los píxeles estén dentro del rango 0-1, dividiremos los valores de intensidad de todos los píxeles por 255. La motivación es lograr consistencia en el rango de valores que se manejan para evitar la distracción mental o la fatiga.
12X_train = X_train/255.0X_test = X_test/255.0
pitón
D. Remodelación
Las capas de Conv2D en Keras están diseñadas para trabajar con tres dimensiones por imagen. Tienen entradas y salidas en 4D. Los argumentos de entrada son el número de muestras, el ancho, la altura y el número de características o canales. Sintaxis: reshape (nb_muestras, ancho, alto,nb_características)
12X_train = X_train.values.reshape(len(X_train),28,28,1)X_test = X_test.values.reshape(len(X_test),28,28,1)
pitón
E. Codificación de etiquetas
Cuando codifique las etiquetas, convierta las etiquetas en una codificación en caliente.
La función de Keras «to_categorical()» toma como entrada las etiquetas 0-9 y las convierte en una codificación de valores enteros de un solo golpe.
123desde keras.utils.np_utils import to_categoricalY_train = to_categorical(Y_train, num_classes =10)
pitón
F. Juego de entrenamiento y validación de Split
Los datos de entrenamiento se dividen en el conjunto de entrenamiento y validación. Los datos de validación se crean para evaluar el rendimiento del modelo antes de aplicarlo a los datos reales. El siguiente código mueve aleatoriamente el 10% de los datos de entrenamiento a los datos de validación. Establecemos una semilla aleatoria =3 para inicializar un generador aleatorio para elegir aleatoriamente los datos de validación.
1234from sklearn.model_selection import train_test_split# Establecer la semilla aleatoria random_seed =3X_train, X_val, Y_train, Y_val = train_test_split(X_train, Y_train, test_size =0.1, random_state=random_seed)
pitón