我正在为 Windows 上的 python3.x 寻找最合适的工具来创建贝叶斯网络,从数据中学习它的参数并执行推理。
我要自己定义的网络结构如下:
它取自 这篇 论文。
除了“Size”和“GraspPose”之外的所有变量都是离散的(并且只能采用 2 种可能的状态),它们是连续的并且应该建模为高斯混合。
作者使用 Expectation-Maximization 算法 来学习条件概率表的参数,并使用 Junction-Tree 算法 来计算精确推理。
据我了解,所有内容都是在 MatLab 中使用 Murphy 的 Bayes Net Toolbox 实现的。
我试图在 python 中搜索类似的东西,这是我的结果:
Python 贝叶斯网络工具箱 http://sourceforge.net/projects/pbnt.berlios/ ( http://pbnt.berlios.de/ )。网站不工作,项目似乎不受支持。
BayesPy https://github.com/bayespy/bayespy 我认为这是我真正需要的,但我没能找到一些与我的案例类似的例子,以了解如何构建网络结构。
PyMC 似乎是一个功能强大的模块,但我在 Windows 64、python 3.3 上导入它时遇到问题。安装开发版时出现错误
警告(theano.configdefaults):未检测到 g++! Theano 将无法执行优化的 C 实现(对于 CPU 和 GPU)并将默认为 Python 实现。性能将严重下降。要删除此警告,请将 Theano flags cxx 设置为空字符串。
更新:
- libpgm ( http://pythonhosted.org/libpgm/ )。正是我需要的,不幸的是 python 3.x 不支持
- 非常有趣的积极开发库:PGMPY。不幸的是,尚不支持连续变量和从数据中学习。 https://github.com/pgmpy/pgmpy/
任何建议和具体示例将不胜感激。
原文由 Spu 发布,翻译遵循 CC BY-SA 4.0 许可协议
看起来 石榴 最近更新为包括贝叶斯网络。我自己还没有尝试过,但界面看起来不错而且很 sklearn-ish。