Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions README.es-ES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@


[![PyPI version](https://badge.fury.io/py/micro-learn.svg)](https://badge.fury.io/py/micro-learn)

**Micro-learn** es una biblioteca de Python para convertir modelos de aprendizaje automático entrenados con scikit-learn en código de inferencia que puede ejecutarse en prácticamente cualquier microcontrolador en tiempo real.

Los algoritmos de aprendizaje automático suelen requerir grandes recursos de cómputo y memoria en la fase de entrenamiento, muy por encima de lo que puede ofrecer un microcontrolador limitado típico. Sin embargo, después del entrenamiento, muchos de estos algoritmos se reducen a parámetros simples que requieren operaciones aritméticas y lógicas básicas para la inferencia. Estas pueden ejecutarse fácilmente en microcontroladores en tiempo real. En resumen, entrena tus modelos de aprendizaje automático en una máquina con abundantes recursos usando scikit-learn y, con una sola línea de código, exporta ese modelo entrenado a código C++/Arduino usando micro-learn.

Todos los algoritmos de inferencia están optimizados para microcontroladores y requieren la menor cantidad posible de operaciones aritméticas. Por ejemplo, las operaciones de división se han convertido en multiplicaciones, ya que estas últimas son mucho más eficientes computacionalmente en los microcontroladores. Tenga en cuenta que todos los algoritmos son exactos y no aproximados. Consulte mi [artículo en ACM](https://dl.acm.org/doi/abs/10.1145/3341105.3373967) para obtener más información.

## Instalación

### Dependencias

- Python (>= 3.6)
- NumPy (>= 1.13.3)

### Instalación para usuarios
Use pip de Python 3 para instalar el paquete más reciente de micro-learn.

```bash
pip install micro-learn
```

## Algoritmos soportados
Los siguientes modelos de scikit-learn son compatibles hasta la fecha:

#### Aprendizaje supervisado (Clasificación)
- Perceptrón
- Regresión logística (Logit)
- Naive Bayes Gaussiano (GNB)
- Clasificador Pasivo-Agresivo (PA)
- Análisis de discriminante lineal (LDA)
- Análisis de discriminante cuadrático (QDA)
- Máquina de vectores de soporte (SVM) (Núcleo lineal)

*Tenga en cuenta que por ahora solo se admite la clasificación binaria. ¡El soporte para clasificación multiclase estará disponible pronto!*

#### Aprendizaje supervisado (Regresión)
- Regresión lineal (LR)

#### Aprendizaje no supervisado (Agrupamiento)
- KMeans

#### Aprendizaje no supervisado (Reducción de dimensionalidad)
- Análisis de componentes principales (PCA)

*¡El soporte para otros modelos de scikit-learn estará disponible pronto!*

## Uso
Entrena cualquiera de los modelos de aprendizaje automático compatibles usando scikit-learn y simplemente pasa este modelo entrenado a *Offload()* de micro-learn. A continuación se muestra un ejemplo para *Gaussian Naive Bayes*. Todos los demás algoritmos soportados siguen la misma secuencia exacta. Para SVM y PCA (algoritmos sensibles a la escala), se puede pasar un objeto *StandardScaler* opcional como segundo argumento a *Offload()*.

```python
>>> from sklearn.naive_bayes import GaussianNB
>>> gnb = GaussianNB()
>>> gnb.fit(X, Y)
>>> from microlearn.offloader import Offload
>>> off = Offload(gnb) #Simply pass your trained model!
>>> off.export_to_arduino('/home/adarsh1001/gnb.ino')
```

¡Y eso es todo! La plantilla de salida para Arduino tendrá el código de inferencia de ML correspondiente junto con todos los parámetros entrenados. Después de exportar, abre el archivo .ino y edita la sección de datos y la sección de etiquetas de clase de salida según tus necesidades. Y por supuesto, dado que el lenguaje de programación de Arduino es un derivado de C/C++, puedes editar directamente la plantilla y convertirla en código .c o .cpp genérico. Para una guía más detallada, puedes consultar mi [publicación en Medium](https://medium.com/analytics-vidhya/micro-learn-getting-started-with-machine-learning-on-arduino-52167bc34c1d) al respecto.

## Historial del proyecto
Comencé a trabajar en aprendizaje automático embebido, tanto desde una perspectiva teórica como práctica, en agosto de 2019 como parte de mi maestría. En noviembre de 2019, mi artículo sobre un tema relacionado fue aceptado en ACM SAC. El trabajo para codificar una biblioteca unificada para exportar modelos de ML entrenados a código de microcontrolador (micro-learn) comenzó en mayo de 2020.

### Cita
Si utiliza micro-learn en una publicación científica, por favor cita mi [artículo](https://dl.acm.org/doi/abs/10.1145/3341105.3373967).