Go to file
eloquentarduino ca66b9fbb2 bump dist to 1.1.23 2021-03-21 09:14:37 +01:00
dist bump dist to 1.1.23 2021-03-21 09:14:37 +01:00
micromlgen minor fix to wifiindoorpositioning.jinja 2021-03-21 09:14:17 +01:00
.DS_Store try to force pip to install the templates folder 2021-01-02 20:01:48 +01:00
.gitattributes add .gitattributes 2021-02-07 19:29:32 +01:00
.gitignore bump dist to 1.1.19 2020-12-27 19:40:02 +01:00
LICENSE.txt fix readme 2019-12-07 18:10:30 +01:00
MANIFEST fix setup template 2021-01-23 08:12:47 +01:00
README.md fix README 2021-01-02 20:11:01 +01:00
publish fix setup template 2021-01-23 08:12:47 +01:00
setup.cfg fix readme 2019-12-07 18:10:30 +01:00
setup.py bump dist to 1.1.23 2021-03-21 09:14:37 +01:00
setup_template.py try to force pip to install the templates folder 2021-01-02 20:01:48 +01:00

README.md

Introducing MicroML

MicroML is an attempt to bring Machine Learning algorithms to microcontrollers. Please refer to this blog post to an introduction to the topic.

Install

pip install micromlgen

Supported classifiers

micromlgen can port to plain C many types of classifiers:

  • DecisionTree
  • RandomForest
  • XGBoost
  • GaussianNB
  • Support Vector Machines (SVC and OneClassSVM)
  • Relevant Vector Machines (from skbayes.rvm_ard_models package)
  • SEFR
  • PCA
from micromlgen import port
from sklearn.svm import SVC
from sklearn.datasets import load_iris


if __name__ == '__main__':
    iris = load_iris()
    X = iris.data
    y = iris.target
    clf = SVC(kernel='linear').fit(X, y)
    print(port(clf))

You may pass a classmap to get readable class names in the ported code

from micromlgen import port
from sklearn.svm import SVC
from sklearn.datasets import load_iris


if __name__ == '__main__':
    iris = load_iris()
    X = iris.data
    y = iris.target
    clf = SVC(kernel='linear').fit(X, y)
    print(port(clf, classmap={
        0: 'setosa',
        1: 'virginica',
        2: 'versicolor'
    }))

PCA

It can export a PCA transformer.

from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
from micromlgen import port

if __name__ == '__main__':
    X = load_iris().data
    pca = PCA(n_components=2, whiten=False).fit(X)
    
    print(port(pca))

SEFR

Read the post about SEFR.

pip install sefr
from sefr import SEFR
from micromlgen import port


clf = SEFR()
clf.fit(X, y)
print(port(clf))