编译的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数组。按字符串排序   如何使用Netbeans设置Java打印的页面大小   java有没有一种方法可以获取sparkjava/嵌入式jetty服务器的主线程执行器?   正则表达式Java正则表达式:需要更简单的解决方案   无法使用java解析XML   MySQL Java JDBC:如何获取自动递增列的名称?   java错误:“限定符必须是表达式”Android Studio   Spring+java。lang.NoClassDefFoundError:weblogic/logging/LogEntryFormatter   java将JList插入GridLayout   listview中的java Get selected复选框   使用CriteriaBuilder的java JPA左外部联接会导致错误:不允许部分对象查询维护缓存或进行编辑   java循环双链接列表addToHead和print   java更好地检测三角形按钮(libgdx)   java ConcurrentHashMap迭代保证人   java如何获取控制台。通过webdriver记录信息?   java Javafx阶段为空   java如何使用apachetika从excel文件中访问空白单元格   java使用SQlite数据库列填充AutoCompleteTextView   java如何在不使用idea构建整个maven项目的情况下运行主方法?