Skip to content

Latest commit

 

History

History
141 lines (83 loc) · 11.6 KB

README.es-ES.md

File metadata and controls

141 lines (83 loc) · 11.6 KB

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


Binder

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)

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)

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)

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)

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)

Mapa de Machine Learning (inglés)

Machine Learning Map

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.

Autor