Ir al contenido principal

Entradas

Mostrando entradas de febrero, 2019

Reconocimiento de caracteres manuscritos con k-nn

En la entrada anterior introducimos el algoritmo k nearest neighbors o de los vecinos más cercanos. Os conté como funciona el algoritmo y os presenté un ejemplo que clasificaba puntitos en un espacio en dos dimensiones. Como sé que os quedasteis con ganas de más (sí, aún os oigo suplicar que os cuente más) vamos a poner a prueba al algoritmo k-nn para ver si es capaz de aprender a reconocer caracteres manuscritos (problema conocido como OCR o reconocimiento óptico de caracteres). Como en el anterior artículo, os dejo un enlace al notebook de Jupyter que he usado para escribir este post: https://github.com/albgarse/InteligenciaArtificial/blob/master/Machine%20Learning/KNN%20Image%20Classifier.ipynb Para entrenar nuestro reconocedor de caracteres vamos a usar un dataset bastante conocido: MNIST . Desde esta web podéis descargar los cuatro archivos que lo componen: train-images-idx3-ubyte.gz: imágenes de entrenamiento train-labels-idx1-ubyte.gz: etiquetas de las imágenes de entrena

Clasificación con k-nearest neighbors

En un artículo anterior hablamos de NumPy y me hubiera gustado completarlo con algún ejemplo concreto. Así que voy a aprovechar este artículo para presentaros un algoritmo muy usado en machine learning y de camino a ilustrarlo con código Python (y la librería NumPy). El algoritmo k-nearest neighbors (abreviado como k-nn) o en español, k vecinos más cercanos, es un algoritmo conceptualmente sencillo y también fácil de implementar, pero que para ciertas tareas puede tener una eficacia más que razonable. En lo que sigue os voy a contar cómo funciona y lo vamos a implementar en Python. En un siguiente artículo, aplicaremos el algoritmo a un problema del mundo real. K-nn pertenece a la familia de algoritmos de clasificación supervisada, es decir, que necesitan la intervención humana para realizar su aprendizaje. Esta familia de algoritmos son capaces de clasificar elementos dentro de una serie de categorías prefijadas. De forma genérica, esta tarea se llama entrenamiento, y consiste en

Breve introducción a las matrices con NumPy

La librería NumPy traslada la potencia de entornos como Matlab u Octave al lenguaje de programación Python. Acometer un proyecto de Machine Learning o IA requiere un manejo intensivo y eficaz de cálculo matricial, y NumPy pone a nuestra disposición toda esa potencia. La libraría dispone de un montón de herramientas y capacidades que no es posible acometer en un artículo como este, sin embargo, me dispongo a contaros lo más importante en cuanto al manejo de matrices con NumPy. Empecemos por un ejemplo sencillo: vamos a crear una matriz. import numpy as np matrix1 = np.matrix([[1, 2, 3, 4], [5, 6, 7, 8]]) print (matrix) [[1 2 3 4] [5 6 7 8]] La primera línea importa la librería para poder usarla en el programa y seguidamente se crea una matriz de dimensión 2x4. Alternativamente, podemos usar una sintaxis al estilo de Matlab. matrix1 = np.matrix('1 2 3 4; 5 6 7 8') Existen otras tres funciones que nos facilitan la creación de matrices: zeros() crea una matriz inicializada