Primeras pruebas con el MNIST dataset en Python

0
29

En los días que vivimos, Machine Learning se ha convertido en el tema de moda. Los algoritmos de inteligencia artificial te permiten hacer procesamiento de datos de formas que hace algunos años habrían resultado muy difíciles o incluso imposibles.

Para trabajar en Machine Learning, una de las principales herramientas son las librerías disponibles en Python, especialmente diseñadas para este propósito. Pero para probar los algoritmos de Machine Learning hace falta contar con datos de prueba que permitan comprobar el performance de tu algoritmo.

En Internet existe toda clase de colecciones de datos diseñadas para este propósito. Uno de los datasets más utilizados es el MNIST, formado por decenas de miles de imágenes de números manuscritos.

mnist en pythonSobre este tema hablamos brevemente en nuestro post anterior: Importar archivos CSV en Python.

En este post lo que haremos será explorar un poco más a fondo el dataset MNIST para ver como lo podemos utilizar en nuestras pruebas con algoritmos de Machine Learning.

En primer lugar debemos saber que MNIST lo podemos descargar en formato CSV en el siguiente enlace: dataset de entrenamiento, dataset de prueba, dataset original. Los dataset de entrenamiento y prueba serán los que estaremos revisando en este post.

El dataset de entrenamiento cuenta con 60,000 registros y el de prueba cuenta con 10,000. Ambos están en formato CSV, donde la primera columna cuenta con las etiquetas de datos y las siguiente 784 columnas cuenta con los pixeles de cada imagen. Estas 784 columnas pueden ser formateadas para reconstruir las imágenes de 28×28 pixeles que forman el dataset.

En Github he creado un repositorio en nuestra cuenta de Panama Hitek en el que trataré de incluir los códigos utilizados en las distintas publicaciones sobre Machine Learning. Ya he agregado el script sobre cómo cargar archivos CSV en Python. En este post lo que haremos será tratar de convertir los pixeles almacenados en los datasets de MNIST en imágenes que puedan ser visualizadas. El código sería el siguiente:

En este código se utiliza la función presentada en nuestro post anterior (loadDataset). En la variable digit se almacenan los datos de la primera fila de datos, entre la columna 1 y 785. Esta fila se formatea como una matriz 28 x 28 y se almacena en digit_pixels. Esta matriz es convertida en una imagen en escala de grises utilizando la función imshow del objeto plt. Finalmente se muestra el contendio del objeto plt con la función show().

Al ejecutar este código, el resultado es el siguiente:

Esta imagen nos presenta un «cero» manuscrito. Si revisamos el dataset de pruebas (mnist_train.csv) en Excel, veremos lo siguiente:

Si cambiamos el índice en la línea digit = x[0] podremos visualizar otros dígitos. Por ejemplo, con el índice 1 veremos un cero. El índice 2 nos mostrará un 4. Luego un 1, 9, 2… y así sucesivamente.

Para que los números sean visualizados en colores, tales como los que he mostrado aquí, se debe utilizar la instrucción plt.imshow(digit_pixels) en vez de plt.imshow(digit_pixels, cmap=’gray’).

Cabe destacar que todos y cada uno de los números manuscritos en este dataset son distintos entre sí. Por ejemplo, en los índices 2, 9, 20, 26, 53 y 58 hay caracteres que representan el número 4. Veamos como lucen:

Como vemos, cada uno de los caracteres es distinto a los otros. Si fuesen iguales, el entrenamiento del modelo de Machine Learning no sería efectivo. En nuestras próximas publicaciones empezaremos a hacer pruebas con los clasificadores, que nos permitirán discriminar la mayor parte de estas imágenes.

Espero que esta información sea de utilidad para ustedes.

0 0 votes
Article Rating
Suscríbete
Notify of
guest

0 Comments
Inline Feedbacks
View all comments