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.
-
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.
- Linear Regression
- Polynomial Regression
- KNN
- Decision Trees
- kmeans
- DBSCAN
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
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.