基于树的嵌入式系统机器学习

emtrees的Python项目详细描述


emtrees

用于微控制器和嵌入式系统的基于树的机器学习分类器。 使用python进行训练,然后在支持c的任何设备上进行推理。

想要天真的贝耶斯?转到embayes

主要功能

嵌入式友好推理

  • 便携式C99代码
  • 无需libc
  • 无动态分配
  • 仅整数/定点数学
  • 单头文件包含
  • 快速、亚毫秒分类
  • 内存效率高。可以使用<100 bytes RAM
  • 运行

方便的培训

  • scikit-learn
  • 兼容的api
  • 在python 3中实现
  • 使用pybind11在python中访问c分类器

MIT licensed

可以作为Matlab分类树的开源替代品, 决策树使用Matlab编码器实现C/C++代码生成。 fitctreefitcensembleTreeBaggerClassificationEnsembleCompactTreeBagger

状态

最少有用

  • 实现了随机林和树外分类器
  • 测试运行在avr atmega、esp8266和linux上。
  • 在ESP8266上,8x8位数字在0.3ms内分类,准确率达到95%
  • 在Linux上,大约比sklearn快2倍

安装

从pypi安装

pip install emtrees --user

用法

  1. 用python训练模型
importemtreesestimator=emtrees.RandomForest(n_estimators=10,max_depth=10)estimator.fit(X_train,Y_train)...
  1. 生成C代码
code=estimator.output_c('sonar')withopen('sonar.h','w')asf:f.write(code)
  1. 使用C代码
#include<emtrees.h>#include"sonar.h"constint32_tlength=60;int32_tvalues[length]={...};constint32_tpredicted_class=sonar_predict(values,length):

有关完整示例代码,请参见examples/digits.py 以及emtrees.ino

待办事项

0.2

  • 微控制器上的独立示例应用程序
  • 在生成的代码中内联包含emtrees.h

1.0

  • 支持返回概率
  • 支持序列化/反序列化树

可能

  • 支持SKLearn GradientBoostingClassifier
  • 支持回归树
  • 支持加权投票
  • 实施隔离林(需要路径/深度)

可能

  • 支持树木学习
  • 支持树木学习
  • 支持CatBoost树的学习
  • 支持/实现非常快速的决策树(vfdt)学习算法
  • 在python绑定中使用openmp时实现多线程

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Gradle嵌套项目配置   java一些mipmap没有显示   java如何使用按钮设置值以在wicket中输入文本   可分页的java自定义排序参数   java Android AdMob NoSuchMethodError:没有静态方法zzand()   java安卓工作室;启动到USB设备(手机),已安装但无法打开   java如何使用jsoup从HTML解析表   java如何自动生成arraylist?   java定制外观和感觉Nimbus   在Java中使用气泡排序对24位数组进行排序   java我无法将javafx与spring集成   java Play 2.7 http请求post请求   Java哈希表在“put”期间用新密钥覆盖现有密钥   如何找到java更新版本?