基于numba的实验性梯度增强机

pygbm的Python项目详细描述


pygbmBuild Statuscodecovpython versions

python中的实验性梯度提升机。

这个项目的目标是评估是否有可能实现 纯python高效的梯度增强直方图分块 树(可能有所有的lightgbm优化)同时保持纯 python 3.6+使用numbajit编译器。

pygbm提供了一组scikit学习兼容估计器类 应该很好地使用scikit学习工具和模型选择工具 (网格搜索和随机超参数搜索)。

长期计划包括与DASK和DASK ML集成 在簇上的核外和分布式拟合。

安装

该项目在pypi上可用,可以使用pip

安装
pip install pygbm

你至少需要Python3.6。

文档

API文档位于:

https://pygbm.readthedocs.io/

您可能还需要查看此repo的examples/文件夹。

状态

这个项目是实验性的。API可能会发生更改,恕不另行通知。使用风险自负。

我们欢迎github问题跟踪程序中的任何反馈:

https://github.com/ogrisel/pygbm/issues

运行开发版本

使用pip以“可编辑”模式安装:

git clone https://github.com/ogrisel/pygbm.git
cd pygbm
pip install -r requirements.txt
pip install --editable .

使用pytest运行测试:

pip install -r requirements.txt
pytest

基准

benchmarks文件夹包含一些用于计算的脚本 PYGBM各部分性能。记住,努玛的jit 编译takes time

剖面

要分析基准,可以使用 snakeviz获取交互式 HTML报告:

pip install snakeviz
python -m cProfile -o bench_higgs_boson.prof benchmarks/bench_higgs_boson.py
snakeviz bench_higgs_boson.prof

调试numba类型推断

反思numba部分中类型推断步骤的结果 由给定的基准测试脚本调用:

numba --annotate-html bench_higgs_boson.html benchmarks/bench_higgs_boson.py

特别值得注意的是检查 snakeviz分析报告突出显示的热循环具有 期望精度水平(例如,损耗计算的float32uint8) 对于binned特征值,…)。

基于线程的并行性的影响

一些基准可以调用numba函数来利用内置的 具有@njit(parallel=True)prange循环的基于线程的并行性。 在多核计算机上,您可以评估基于线程的并行性 通过显式设置NUMBA_NUM_THREAD环境进行缩放 变量。例如,尝试:

NUMBA_NUM_THREADS=1 python benchmarks/bench_binning.py

对:

NUMBA_NUM_THREADS=4 python benchmarks/bench_binning.py

致谢

尼古拉斯·赫格的研究得到了国家科学基金会的支持。 根据第1740305号授权书和DARPA根据第DARPA-BAA-16-51号授权书

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

推荐PyPI第三方库


热门话题
从类访问属性时发生java编译错误   性能更好的Java序列化替代方案   java EhCache Spring XML集成命名空间   java如何使用表达式在JSP中检索新生成的图像   Java neo4j,REST和内存   java如何在mouseListener中删除和创建对象?   java在Hibernate中使用预定义前缀填充Id列   java无法从Elastic Beanstalk连接到Amazon SimpleDB   多线程通过单击JavaSwing中的按钮创建具有新名称的类的新对象   java如何在Kotlin中实现Memento模式   Android系列。对java进行排序。lang.NullPointerException   方法中的java重载构造函数内部类