Python 中的概率编程:使用 Theano 进行贝叶斯建模和概率机器学习
项目描述
PyMC3 是一个用于贝叶斯统计建模和概率机器学习的 Python 包,专注于高级马尔可夫链蒙特卡罗 (MCMC) 和变分推理 (VI) 算法。它的灵活性和可扩展性使其适用于大量问题。
查看入门指南,或 使用 Binder与实时示例进行交互!有关 PyMC3 的问题,请访问我们的PyMC Discourse论坛。
PyMC3 和 Theano 的未来
自从 Theano 停止由原作者开发以来,围绕 PyMC3 的未来存在许多问题和不确定性,我们开始使用基于张量流概率的 PyMC 版本进行实验。
从那时起,许多事情发生了变化,我们很高兴地宣布 PyMC3 将继续依赖 Theano,或者更确切地说,它的继任者 Theano-PyMC ( pymc3 <4)和 Aesara ( pymc3 >=4 )。查看< https://github.com/aesara-devs/aesara >`__),特别是PyMC3`主分支的最新进展< https://github.com/pymc-devs/pymc3/ >`。
特征
直观的模型规范语法,例如,x ~ N(0,1) 转换为x = Normal('x',0,1)
强大的采样算法,例如No U-Turn Sampler,允许具有数千个参数的复杂模型,而几乎没有拟合算法的专业知识。
变分推理:用于快速近似后验估计的ADVI 以及用于大型数据集的小批量 ADVI。
- 依赖Theano-PyMC,它提供:
计算优化和动态 C 或 JAX 编译
Numpy 广播和高级索引
线性代数运算符
简单的可扩展性
对缺失值插补的透明支持
入门
如果您已经了解贝叶斯统计:
PyMC3教程
与 PyMC3 一起用一本书学习贝叶斯统计:
Probabilistic Programming and Bayesian Methods for Hackers:一本很棒的书,里面有很多应用的代码示例。
约翰·克鲁施克(John Kruschke)的《做贝叶斯数据分析》一书的 PyMC3 端口以及第二版:贝叶斯数据分析的原理介绍。
Michael Lee 和 EJ Wagenmakers 所著的“贝叶斯认知建模”一书的 PyMC3 端口:专注于在认知建模中使用贝叶斯统计。
Osvaldo Martin用 Python 进行贝叶斯分析(第二版):很棒的入门书。(代码和勘误表)。
PyMC3 会谈
还有一些关于 PyMC3 的谈话,这些谈话收集在这个YouTube 播放列表 中,并且作为PyMCon 2020的一部分
安装
要在您的系统上安装 PyMC3,请按照相应安装指南中的说明进行操作:
引用 PyMC3
Salvatier J.、Wiecki TV、Fonnesbeck C. (2016) 使用 PyMC3 在 Python 中进行概率编程。PeerJ 计算机科学 2:e55 DOI:10.7717/peerj-cs.55。
接触
我们使用discourse.pymc.io作为我们的主要沟通渠道。您还可以在Twitter @pymc_devs上关注我们以获取更新和其他公告。
要询问有关 PyMC3 建模或使用的问题,我们鼓励在“问题”类别下的 Discourse 论坛上发帖。您还可以在“开发”类别中建议功能。
要报告 PyMC3 的问题,请使用问题跟踪器。
最后,如果您需要联系以获取有关该项目的非技术信息,请给我们发送电子邮件。
执照
使用 PyMC3 的软件
Exoplanet:用于对系外行星和其他天文时间序列的过境和/或径向速度观测进行建模的工具包。
Bambi : Python 中的 BAyesian 模型构建接口 (BAMBI)。
pymc3_models:基于 scikit-learn API 构建的自定义 PyMC3 模型。
PMProphet:Facebook Prophet 模型的 PyMC3 端口,用于时间序列建模
webmc3:用于探索 PyMC3 跟踪的 Web 界面
sampled:PyMC3 模型的装饰器。
NiPyMC:Python 中 fMRI 数据的贝叶斯混合效应建模。
beat:贝叶斯地震分析工具。
pymc-learn:基于 pymc3_models/scikit-learn API 构建的自定义 PyMC 模型
fenics-pymc3:FEniCS 的可微分接口,一个用于求解偏微分方程的库。
cell2location:通过集成的单细胞和空间转录组学全面绘制组织细胞结构图。
如果您的软件未在此处列出,请与我们联系。
引用 PyMC3 的论文
有关不断更新的列表,请参阅Google Scholar。
贡献者
请参阅GitHub 贡献者页面。另请阅读我们的行为准则指南,以获得更好的贡献体验。
支持
PyMC3 是 NumFOCUS 旗下的一个非盈利项目。如果你想在经济上支持 PyMC3,你可以在这里捐款。
面向企业的 PyMC
PyMC 现在作为 Tidelift 订阅的一部分提供!
Tidelift 正在与 PyMC 和其他数千个开源项目的维护者合作,为您用于构建应用程序的开源依赖项提供商业支持和维护。节省时间、降低风险并改善代码健康,同时为 PyMC 做出财务贡献——让它更加健壮、可靠,让我们面对现实吧,令人惊叹!