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,polyandrbfkernels 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:
trainmethod trains the model and optionally saves the model file tosave_path. This method is totally compatible with scikit-learn library.predictmethod runs the model on the given data.- static method
loadloads the model from saved path. exportmethod 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
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
149a0ea65ca054ffefc3ccf4d39e0f3538ce6ef6a3b81c1a34315be45aba5556
|
|
| MD5 |
92934b5482159204e465e77f22d39479
|
|
| BLAKE2b-256 |
7109416b9776445c8dbfecb7d25cddc0e5da27ada10c10415d15b19ebf95ed94
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9878538a51b9ac5b029d1a6fd69a9302189e31bcdc0bd159ef07c0671040156c
|
|
| MD5 |
60a136a5198bf1c8bc6212939e7962e8
|
|
| BLAKE2b-256 |
b935857934de3940f81588daea0c434c6df792b80b4d6ee9e5714b386b062031
|