scikit-learn中的随机森林解释

6
我正在使用scikit-learn的随机森林回归器来拟合数据集上的随机森林回归器。是否可能以一种格式解释输出,以便我可以在不使用scikit-learn甚至Python的情况下实现模型拟合?
解决方案需要在微控制器或甚至FPGA中实现。我正在使用Python进行分析和学习,但希望在uC或FPGA上实现。
4个回答

4
你可以查看Graphviz,它使用“点语言”来存储模型(如果你想要构建自定义解释器,这种语言非常易读,不应该很难)。Scikit-learn中有一个export_graphviz函数。你可以通过boost库的read_graphviz方法或其他可用的自定义解释器在C++中加载和处理模型。

1
看起来 export_graphvizsklearn.tree 中,并且需要一个决策树作为参数。那么如何将其应用于 sklearn.ensemble.RandomForestRegressor 这样的集成方法呢? - Carlos Macasaet
1
@Los 随机森林仅仅是一组决策树,因此可以导出为Graphviz格式。 - sashkello
1
很棒。我刚刚注意到了获取单个回归器的estimators_字段:http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestRegressor.html。谢谢! - Carlos Macasaet

2
您可以尝试从树集成模型中提取规则,并在硬件中实现这些规则。
您可以使用TE2Rules(Tree Ensembles to Rules)来提取人类可理解的规则,以解释Scikit树集成(如GradientBoostingClassifier)。它提供了控制可解释性、保真度和运行时间预算的杠杆,以提取有用的解释。由TE2Rules提取的规则保证能够精确地近似于树集成,通过考虑集成中多个树的联合交互作用。
参考资料:
TE2Rules:您可以在此处找到代码:https://github.com/linkedin/TE2Rules 和文档:https://te2rules.readthedocs.io/en/latest/
披露:我是TE2Rules的核心开发人员之一。

0
对于微控制器实现来说,通常最实用的是使用C语言。有一些库支持将scikit-learn的RandomForestRegressor转换为C代码,包括:
- [micromlgen](link1) - [m2cgen](link2) - [emlearn](link3)

0

这部分的意思不太清楚:

现在,我已经有了结果,是否有可能以某种格式解释它,然后实现拟合过程,而不使用sklearn甚至python?

为给定数据集实现拟合过程?树拓扑结构?参数选择?

关于“不使用sklearn或python实现”,您是指“移植字节码或二进制文件”还是“完全新的代码实现”?

假设您指的是后者,我建议使用GPU而不是FPGA或uC。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接