我正在寻找最适合于python3.x的工具来创建贝叶斯网络,从数据中学习它的参数并执行推理。创建贝叶斯网络并使用Python3.x学习参数
的网络结构,我想自己定义如下:
它是由this纸取出。
所有的变量都是离散的(并且只能采用2种可能的状态),除了“Size”和“GraspPose”,它们是连续的,应该被模拟为高斯混合。
作者使用最大期望算法学习的条件概率表的参数和结树算法计算精确推断。
据我所知,所有的都是通过Murphy的Bayes Net Toolbox在MatLab中实现的。
我试图寻找在python类似的东西,这里是我的结果:
- Python的贝叶斯网络工具箱http://sourceforge.net/projects/pbnt.berlios/(http://pbnt.berlios.de/)。网站不起作用,项目似乎不被支持。
- BayesPy https://github.com/bayespy/bayespy 我认为这是我真正需要的,但我找不到类似于我的情况的一些例子,以了解如何处理网络结构的构建。
PyMC似乎是一个功能强大的模块,但我在将它导入到Windows 64,python 3.3时遇到了问题。当我安装开发版本时出现错误
WARNING(theano.configdefaults):g ++ not detected! Theano将无法执行优化的C实现(对于CPU和GPU),并将默认为Python实现。性能将严重下降。要移除此警告,请将Theano标志cxx设置为空字符串。
UPDATE:
- libpgm(http://pythonhosted.org/libpgm/)。正是我需要的,不幸的是不支持python 3.x
- 非常有趣的积极开发库:PGMPY。不幸的是,连续变量和数据学习尚未得到支持。 https://github.com/pgmpy/pgmpy/
任何建议和具体的例子将不胜感激。
我从来没有尝试过,但你可能会检查https://pypi.python.org/pypi/BNfinder/2.0.4 – runDOSrun 2015-02-10 12:26:42
@runDOSrun谢谢。不幸的是似乎没有被移植到python 3.x – Spu 2015-02-10 12:29:56
你是否尝试过scikit-learn? http://scikit-learn.org/stable/modules/naive_bayes.html似乎有你想要的,以及许多其他的ML算法在python 3.x中的工作。 – IVlad 2015-02-10 12:53:15