Skip to main content

Naive Bayes classifier for embedded systems

Project description

# embayes Bayesian machine learning classifiers for embedded systems. Train in Python, deploy on microcontroller.

## Key features

Embedded-friendly Classifier

  • Portable C99 code
  • No stdlib required
  • No dynamic allocations
  • Integer/fixed-point math only
  • Single header file include
  • Fast, sub-millisecond classification

Convenient Training

  • API-compatible with [scikit-learn](http://scikit-learn.org)
  • Implemented in Python 3
  • C classifier accessible in Python using pybind11

[MIT licensed](./LICENSE.md)

## Status Minimally useful

  • Gaussian Naive Bayes classifier implemented
  • Tested running on ESP8266 and Linux.
  • On ESP8266, 2 classes and 30 features classify in under 0.5ms

## Installing

Install from git

git clone https://github.com/jonnor/embayes python3 setup.py install –user

## Usage

See [examples/cancer.py](./examples/cancer.py) and [embayes.ino](./embayes.ino)

## TODO

0.2

  • Make estimator a wrapper around sklearn.naivebayes.GaussianNB
  • Make estimator work in sklearn pipeline
  • Make pdf approximation configurable as parameter

1.0

  • Support generating inline C code, not needing model coefficients in RAM
  • Support de/serializing coefficients at runtime
  • Support training on microcontroller

Project details


Download files

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

Files for embayes, version 0.1.1
Filename, size File type Python version Upload date Hashes
Filename, size embayes-0.1.1.tar.gz (4.8 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page