En este artículo comparto mi trabajo con uno de los datasets más emblemáticos en el mundo del aprendizaje automático: MNIST (Modified National Institute of Standards and Technology database). MNIST es un conjunto de datos compuesto por 70,000 imágenes en escala de grises de dígitos manuscritos (del 0 al 9), divididas en 60,000 para entrenamiento y 10,000 para prueba. Cada imagen es una matriz de 28×28 píxeles que representa un número escrito a mano.
Desde su creación a finales de los años 90, MNIST se ha convertido en un estándar para probar y comparar algoritmos de reconocimiento de imágenes, gracias a su simplicidad y calidad. Aunque hoy existen datasets más complejos, MNIST sigue siendo la base fundamental para aprender conceptos esenciales en machine learning y deep learning. La evolución en técnicas ha llevado desde métodos clásicos como k-NN y SVM hasta redes neuronales convolucionales (CNN).
Para comenzar, importamos las imágenes directamente desde Kaggle a nuestro notebook de Google Colab, lo que facilita el acceso y manipulación del dataset. Luego, creamos funciones personalizadas para leer y mostrar imágenes, permitiéndonos explorar visualmente los datos y verificar su calidad.
A continuación, generamos los conjuntos de datos de entrenamiento y prueba. Aunque MNIST ya viene dividido, es importante preparar estos conjuntos para integrarlos en nuestro flujo de trabajo y asegurar una evaluación correcta del modelo.
Como parte del preprocesamiento, normalizamos los valores de los píxeles escalándolos de un rango original de 0 a 255 a un rango entre 0 y 1, facilitando el aprendizaje del modelo. Además, aplanamos cada imagen de su formato original 28×28 píxeles a un vector unidimensional de 784 valores, necesario para alimentar ciertos tipos de modelos, como las redes densas.
Con estos datos preparados, implementamos un clasificador K-Nearest Neighbors (KNN) basado en el principio del vecino más cercano con k=1 y utilizando la distancia euclídea al cuadrado como medida de proximidad. Este método simple sirve como primera aproximación para el reconocimiento de dígitos.
Para evaluar su desempeño, realizamos varias mediciones de rendimiento, incluyendo precisión y matriz de confusión. Además, aplicamos Análisis de Componentes Principales (PCA) para reducir la dimensionalidad y visualizar la distribución de los datos en dos dimensiones, lo que nos ayuda a entender mejor la estructura interna del dataset.
Es importante destacar que, aunque esta implementación inicial de KNN es sencilla, en próximas etapas planeamos ajustar hiperparámetros clave del algoritmo, como el número de vecinos (k), los pesos de los vecinos y la métrica de distancia, utilizando técnicas como la validación cruzada para optimizar el rendimiento.
Finalmente, este proyecto representa un punto de partida para explorar métodos más avanzados, tales como la regresión logística, máquinas de soporte vectorial, árboles de decisión y, especialmente, las redes neuronales convolucionales (CNN). Estas últimas aprovechan la estructura espacial de las imágenes y suelen lograr resultados significativamente mejores en tareas de reconocimiento de dígitos.
Invito a quienes quieran seguir aprendiendo y experimentando con diferentes algoritmos a acompañarme en esta aventura, donde juntos iremos descubriendo las fortalezas y limitaciones de cada método, y avanzaremos hacia modelos más precisos y eficientes para la clasificación de imágenes.









Deja un comentario