基于树的嵌入式系统机器学习
emtrees的Python项目详细描述
emtrees
用于微控制器和嵌入式系统的基于树的机器学习分类器。 使用python进行训练,然后在支持c的任何设备上进行推理。
想要天真的贝耶斯?转到embayes
主要功能
嵌入式友好推理
- 便携式C99代码
- 无需libc
- 无动态分配
- 仅整数/定点数学
- 单头文件包含
- 快速、亚毫秒分类
- 内存效率高。可以使用
<100 bytes RAM
运行
方便的培训
- 与scikit-learn 兼容的api
- 在python 3中实现
- 使用pybind11在python中访问c分类器
可以作为Matlab分类树的开源替代品,
决策树使用Matlab编码器实现C/C++代码生成。
fitctree
,fitcensemble
,TreeBagger
,ClassificationEnsemble
,CompactTreeBagger
状态
最少有用
- 实现了随机林和树外分类器
- 测试运行在avr atmega、esp8266和linux上。
- 在ESP8266上,8x8位数字在0.3ms内分类,准确率达到95%
- 在Linux上,大约比sklearn快2倍
安装
从pypi安装
pip install emtrees --user
用法
- 用python训练模型
importemtreesestimator=emtrees.RandomForest(n_estimators=10,max_depth=10)estimator.fit(X_train,Y_train)...
- 生成C代码
code=estimator.output_c('sonar')withopen('sonar.h','w')asf:f.write(code)
- 使用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时实现多线程