Skip to main content

A simple tool to embed scikit-learn models into microcontrollers

Project description

Machine Learning for Embbedded Devices

sklearn2c is a tool that converts scikit-learn library classification algorithms to C code. It can be used to generate C code from trained models, which can then be used in microcontrollers or other embedded systems. The generated code can be used for real-time classification tasks, where the computational resources are limited.

Supported Models

Classification

  • Bayes Classifier*

  • Decision Trees

  • KNN Classifier

  • C-SVC**

    *: sklearn2c does not use scikit-learn GaussianNB(), instead it uses the following cases to compute decision function.

    **: linear, poly and rbf kernels are supported.

Regression

  • Linear Regression
  • Polynomial Regression
  • KNN
  • Decision Trees

Clustering

  • kmeans
  • DBSCAN

Installation

You can install the library via pip either using:

pip install sklearn2c

or

pip install git+git@github.com:EmbeddedML/sklearn2c.git

Alternatively, you can install conda package:

conda install sklearn2c or mamba install sklearn2c

Usage

Please check examples directory under this repository. For example, decision tree classifier is created as follows:

  • train method trains the model and optionally saves the model file to save_path. This method is totally compatible with scikit-learn library.
  • predict method runs the model on the given data.
  • static method load loads the model from saved path.
  • export method generates model parameters as C functions.
dtc = DTClassifier()
dtc.train(train_samples, train_labels, save_path="<path/to/model>")
dtc.predict(test_samples)
dtc2 = DTClassifier.load(dtc_model_dir)
dtc2.export("<path/to/config_dir>")

For inference on C(specifically for STM32 boards), you can take a look at STM32_inference directory for the corresponding model.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sklearn2c-0.0.4.tar.gz (11.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sklearn2c-0.0.4-py3-none-any.whl (17.7 kB view details)

Uploaded Python 3

File details

Details for the file sklearn2c-0.0.4.tar.gz.

File metadata

  • Download URL: sklearn2c-0.0.4.tar.gz
  • Upload date:
  • Size: 11.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.18

File hashes

Hashes for sklearn2c-0.0.4.tar.gz
Algorithm Hash digest
SHA256 149a0ea65ca054ffefc3ccf4d39e0f3538ce6ef6a3b81c1a34315be45aba5556
MD5 92934b5482159204e465e77f22d39479
BLAKE2b-256 7109416b9776445c8dbfecb7d25cddc0e5da27ada10c10415d15b19ebf95ed94

See more details on using hashes here.

File details

Details for the file sklearn2c-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: sklearn2c-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 17.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.18

File hashes

Hashes for sklearn2c-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 9878538a51b9ac5b029d1a6fd69a9302189e31bcdc0bd159ef07c0671040156c
MD5 60a136a5198bf1c8bc6212939e7962e8
BLAKE2b-256 b935857934de3940f81588daea0c434c6df792b80b4d6ee9e5714b386b062031

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page