12 KiB
Homemade Machine Learning (Aprendizaje automatico casero)
UA UCRANIA ESTÁ SIENDO ATACADA POR EL EJERCITO RUSO. CIVILES ESTAN SIENDO ASESINADOS. AREAS RESIDENCIALES ESTAN SIENDO BOMBARDEADAS. Ayuda a Ucrania via National Bank of Ukraine
- Ayuda a Ucrania via SaveLife fund
- Más información en war.ukraine.ua y MFA of Ukraine
También te podría interesar 🤖 Interactive Machine Learning Experiments
Para la versión en Octave/MatLab de este repositiorio, visita machine-learning-octave project.
Este repositorio contiene ejemplos de algoritmos populares en machine learning implementados en Python con los racionales matemáticos explicados. Cada algoritmo tiene un Jupiter Notebook interactive asociado que te permite jugar con la data, la configuración de los algoritmos e inmediatamente ver los resultados, gráficas y predicciones directamente en tu explorador. En la mayoría de los casos las explicaciones están basadas en this great machine learning course por Andrew Ng.
El propósito de este repositorio no es de implementar algoritmos de machine learning utilizando bibliotecas desarrolladas por 3eros que consisten en comandos de una linea. El propósito es practicar la implementación de estos algoritmos desde zero y por consiguiente mejorar el entendimieno de la matematica detrás de cada algoritmo. Es por esto que todas las implementaciones son llamadas "caseras" y no están hachas para ser utilizadas fuera de un contexto didáctico.
Supervised Learning (Aprendizaje supervisado)
En este tipo de algoritmos contamos con un set de data de entrenamiento (training data) como entrada y un set de etiquetas o "respuestas correctas" correspondiente con ladata de entrada que serviran como salida. El propósito es entrenar nuestro modelo (parametros del algoritmo) para emparejar los datos de entrada con los de salida correctamente (hacer predicciones correctas). Esto con el fin de encontrar los parametros del modelo que continuaran este emparejamiento (correcto) de entrada+salida con nuevos datos.
Regression (Regresión)
En problemas de regresión hacemos predicciones de datos reales. Básicamente intentamos dibujar una linea/plano através de los ejemplos de entrenamiento.
Ejemplos de uso: pronostico de precios de acciones, análisis de ventas, dependencias numericas, etc...
🤖 Linear Regression (Regresión linear)
- 📗 Math | Linear Regression - teoría y más para leer (en inglés)
- ⚙️ Code | Linear Regression - ejemplo de implementación
- ▶️ Demo | Univariate Linear Regression (Regresión univariable) - predecir la evaluacion de
country happiness (felicidad en el país)usandoeconomy GDP (producto interno bruto) - ▶️ Demo | Multivariate Linear Regression(Regresión multivariable) - predecir la evaluacion de
country happiness (felicidad en el país)usandoeconomy GDP (producto interno bruto)yfreedom index (índice de libertad) - ▶️ Demo | Non-linear Regression - usar regresión linear con caracteristicas polinimiales y sinusoidales para predecir dependencias no-lineales
Classification (Clasificación)
En problemas de clasificación no contamos con etiquetas o "respuestas correctas". En este tipo de problemas dividimos la data de entrada en grupos dependiendo sus características.
Ejemplos de uso: filtros de spam, detección de lenguaje, encontrar documentos similares, reconocimiento de letras escritas a mano, etc...
🤖 Logistic Regression (Regresión logística)
- 📗 Math | Logistic Regression - teoría y más para leer (en inglés)
- ⚙️ Code | Logistic Regression - ejemplo de implementación
- ▶️ Demo | Logistic Regression (Linear Boundary) - predecir la
class (clase)de flor basado enpetal_length (longitud del pétalo)ypetal_width (ancho del pétalo) - ▶️ Demo | Logistic Regression (Non-Linear Boundary) - predicir la
validity (validez)de un microchip basado enparam_1yparam_2 - ▶️ Demo | Multivariate Logistic Regression | MNIST - reconocer números escritos a mano en imagenes de
28x28pixeles - ▶️ Demo | Multivariate Logistic Regression | Fashion MNIST - reconocer artículos de ropa en imagenes de
28x28pixeles
Unsupervised Learning (Aprendizaje no supervisado)
Aprendizaje no supervisado es una rama del machine learning que aprende de data que no ha sido etiquetada, clasificada o categorizada. En lugar de aprender de retoralimentación, unsupervised learning identifica caracteristicas en común de la data y reacciona de acuerdo a la presencia (o ausencia) de estas caracteristicas en data nueva.
Clustering (Clústering)
En problemas de clústering dividimos los ejemplos de entrenamiento por caracteristicas desconocidas. El algoritmo en si decide que caracteristicas usa para hacer esta división.
Ejemplos de uso: segmentación de mercados, analysis de redes sociales, organizar clústers de cómputo, análisis de data astronómica, compresión de imagenes, etc...
🤖 K-means Algorithm (Algoritmo K-means)
- 📗 Math | K-means Algorithm - teoría y más para leer (en inglés)
- ⚙️ Code | K-means Algorithm - ejemplo de implementación
- ▶️ Demo | K-means Algorithm - dividir flores en clústers basandonos en
petal_length (longitud del pétalo)ypetal_width (ancho del pétalo)
Anomaly Detection (Detección de anomalías)
La detección de anomalías es la identificación de articulos, eventos o observaciones raras que levantan sospechas ya que difieren significativamente de la mayoría de la data.
Ejemplos de uso: detección de intrusos, detección de fraude, monitoreo de la salud del sistema, remover data anómala de un set, etc...
🤖 Anomaly Detection using Gaussian Distribution (Detección de anomalías utilizando la Distribución Normal)
- 📗 Math | Anomaly Detection using Gaussian Distribution - teoría y más para leer (en inglés)
- ⚙️ Code | Anomaly Detection using Gaussian Distribution - ejemplo de implementación
- ▶️ Demo | Anomaly Detection - encontrar anomalías en los parametros de servicio de un servidor como
latencyythreshold
Neural Network (NN) (Redes Neurales)
Las NN en si no son un algoritmo, más bien son un marke de referencia para el uso de varios algoritmos juntos y el procesamiento de data compleja.
Ejemplos de uso: como un substituto sobre todos los demás algoritmos en general, reconocimiento de imagenes, procesamiento de imagened (aplicando cierts estilos), traducciones, etc...
🤖 Multilayer Perceptron (MLP) (Perceptrón de multiples capas)
- 📗 Math | Multilayer Perceptron - teoría y más para leer (en inglés)
- ⚙️ Code | Multilayer Perceptron - ejemplo de implementación
- ▶️ Demo | Multilayer Perceptron | MNIST - reconocer números escritos a mano en imagenes de
28x28pixeles - ▶️ Demo | Multilayer Perceptron | Fashion MNIST - reconocer artículos de ropa en imagenes de
28x28pixeles
Mapa de Machine Learning (inglés)
La fuente de este mapa es este maravilloso blog post
Prerequisitos
Instalación de Python
Asegura de tener Python instalado en tu computadora.
Recomendamos utilizar la biblioteca estándar de Pyton venv para crear un ambiente virtual y tener Python, pip y todos los paquetes dependientes instalados y entregados desde el directorio del proyecto directamente para evitar problemas con cambios globales de los paquetes y sus versiones.
Instalar las dependencias
Instala todas las dependencias requeridas para el proyecto ejecutando:
pip install -r requirements.txt
Lanzar Jupyter Localmente
Todas las demonstraciones en este proyecto pueden ser ejecutadas directamnte en tu navegador sin necesidad de instalar Jypyter localmente. Sin embargo, si queres lanzar Jupyter Notebook localmente, es probable que lo quieras hacer utilizando el siguiente comando desde la carpeta raíz del proyecto:
jupyter notebook
Después de esto, el Jupyter Notebook se puede accesar a través de http://localhost:8888.
Lanzar Jupyter de manera remota
Cada sección dedicada a un algoritmo contiene enlaces a Jupyter NBViewer. Esta es una herramienta onlina muy veloz para pre-vizualisar el código, los graficos y la data desde tu navegador sin necesidad de instalar nada localmente. En el caso que quieras camnbiar el código y experimentar con el notebook, tienes que lanzarlo desde Binder. Puedes hacerlo simplemente con hacer clock en "Execute on Binder" en la esquina superior derecha de NBViewer.
Datasets
La lista de los datasets que son utilizados en los demos se encuentra ubicada en data folder.
Apoyo al proyecto
Puedes apoyar el proyecto vía ❤️️ GitHub o ❤️️ Patreon.

