编译的scikit学习决策树用于更快的评估

sklearn-compiledtrees的Python项目详细描述


Build StatusPyPI

安装

在麻省理工学院的许可下发布。

pip install sklearn-compiledtrees

基本原理

在某些用例中,对给定模型的预测处于热路径中,因此 加快决策树评价是非常有用的。

加快决策树评价的有效途径是 生成表示树的计算的代码,将其编译为 优化目标代码,并通过dlopen/dlsym动态加载该文件 或同等的。

https://courses.cs.washington.edu/courses/cse501/10au/compile-machlearn.pdf 进行详细讨论,以及 http://tullo.ch/articles/decision-tree-evaluation/更多 教学解释和更多的基准在C++中。

这个包为简单的 单一输出回归树或集合的情况。

它已经在OSX和Linux上测试过了。我们目前没有 支持windows平台进行编译后的评估,尽管这应该 不是一个很大的工作量。

用法

importcompiledtreesimportsklearn.ensembleX_train,y_train,X_test,y_test=...clf=ensemble.GradientBoostingRegressor()clf.fit(X_train,y_train)compiled_predictor=compiledtrees.CompiledRegressionPredictor(clf)predictions=compiled_predictor.predict(X_test)

基准

对于随机森林,我们在评估中看到5到8倍的加速。对于渐变 增强的合奏,在评估中的加速是1.5倍到3倍。 这是因为梯度增强树已经有了 优化预测实现。

有一个附加的基准脚本允许我们检查 在一系列集成配置和 数据集。

在所附的图中,GB是梯度增强的,RF是随机的 林、D1等对应于设置max-depth=1B10 对应于设置max_leaf_nodes=10

图表

for dataset in friedman1 friedman2 friedman3 uniform hastie;do
    python ../benchmarks/bench_compiled_tree.py \
        --iterations=10\
        --num_examples=1000\
        --num_features=50\
        --dataset=$dataset\
        --max_estimators=300\
        --num_estimator_values=6done

timings3907426606273805268timings-1162001441413946416timings5617004024503483042timings2681645894201472305timings2070620222460516071

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

推荐PyPI第三方库


热门话题
java Intellij和Eclipse无法找到库工件   java Mapbox Android Symbolayer重置筛选器   java如何在顶部显示特定的recyclerview项?   java如何在Hibernate中使用@Qualifier   我想计算特定文本webdriver java在多个页面上可用的HTML表中的数据   java捕获Spring MVC REST服务抛出的Jersey REST客户端的异常   java Hibernate flush()影响事务   密钥绑定Java密钥绑定   sonarqube java,sonar,圈复杂度   使用3DES在Java中加密,在SQL Oracle中解密   regex正则表达式在regex101上工作。com,但不是prod   JAVAsql。SQLException:ORA00600:内部错误代码,参数:[12811],[93233]   java H2数据库存储在哪里?   java如何避免在使用Jackson时从JSON字符串反序列化空JSON数组元素