编译的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为什么javaassist仅在项目中使用lambda时加载Entitymanager时抛出无效的常量类型:18   java如何识别用户是否在Alexa中首次启动技能?   java maven:如何防止插件更新   java StringBuilder将null追加为“null”   在java中,我可以在画布上绘制画布吗?   java如何在JRadioButton上垂直对齐文本和图像?   java“类是对象的集合”。这个定义是对的还是错的?   java如何用其他字符替换字符串中的1个或多个字符?   Java的HashSet<Double>及其子集的hashcode的唯一性   对象ArrayList的java并发修改错误   多线程Java线程:让EDT函数等待长时间运行的函数离开EDT   java如何重写方法,将一个实例变量和一个局部变量相加,从而生成一个数据类型为Double的新变量?