基于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如何抑制JDBC SQLWarnings?   swing如何在Java中定位两个对角的JPanel?   java有一个好的设计模式:common方法有一个超类param,但包含对子类中可用方法的调用(因此需要强制转换)   java使用OAuth 2.0 for Google从电子表格中获取数据   java如何设置自定义按钮的单击侦听器?   eclipse为了使结果正确,我需要使用double而不是int。为什么?(爪哇)   房间数据库的java删除方法不起作用   java加速输出图像   java Appium IOS测试在手动启动服务器时运行,但在通过AppiumDriverLocalService启动服务器时不运行   动态加载的JDBC驱动程序的java提取版本   java spring mvc占位符未使用<spring:input>标记打印   java的主要活动。xml内容显示NavigationDrawer的前面   java从Web服务下载的音频质量不够好   java创建文件的最简单方法是什么?   c#在Xamarin上使用此java代码   java Unicenta密码加密   Java语言中的python元组   Java在进入数据库之前缓存数据   使用另一个类在ArrayList中存储java对象