贝叶斯网络库

16

大家好,作为标题所示,我正在寻找学习和推断贝叶斯网络的库。我已经找到了一些,但希望能够得到推荐。

以下是快速概述的要求:

  • 最好使用Java或Python编写
  • 可以通过代码进行配置(包括网络本身)
  • 必须提供源代码
  • 项目仍在维护中
  • 越强大越好

你推荐哪一个呢?


我是 OP,我已经投票删除了这个问题,因为保持 SE 网站的清洁也是我的个人目标。 - steffen
3个回答

11

请看一下Weka。在我所在的地区,这个工具很受欢迎……它是开源的,用Java编写。

这份文档将告诉你有关Weka中贝叶斯网络的内容,摘要如下:

  • 使用各种爬山(K2、B等)和通用(模拟退火、禁忌搜索)算法进行贝叶斯网络结构学习。
  • 实现了局部得分指标:贝叶斯、BDe、MDL、熵、AIC。
  • 实现了全局得分指标:留一交叉验证、k折交叉验证和累积交叉验证。
  • 提供基于条件独立性的因果推断算法。
  • 使用直接估计和贝叶斯模型平均法进行参数估计。
  • 提供图形用户界面,便于检查贝叶斯网络。

Weka确实很强大,但是定义网络结构的复杂程度并不清楚,而非学习它。 不过手册表明这是可能的。 (+1)感谢提供bn手册的链接。(离题:有兴趣参加stats.stackexchange吗?我们需要更多的机器学习者;) - steffen
我发现Weka的学习曲线相当陡峭,但我认为这是值得的。我确实在stats.stackexchange上,只是不太活跃 :) - Dr G

8
所以我给出我的主观答案。从我的经验来看,与统计学相关的所有事情都最好用R解决。我经常看到,在与统计学相关的领域中,R拥有最多的库,并且往往实现了最先进的算法/方法。
像我这样的大多数程序员喜欢使用他们已知道的语言,并且学习新的东西是一种权衡,主要因为它耗费时间。
因此,如果学习一门新语言是可行的选择,那么在我看来,R是一个不错的选择,甚至是最佳的选择。
简要查看与贝叶斯网络和贝叶斯推断相关的R库。
Bayesian: http://cran.r-project.org/web/views/Bayesian.html 图形模型: http://cran.r-project.org/web/views/gR.html 机器学习: http://cran.r-project.org/web/views/MachineLearning.html R的主要优点:
- 安装库很容易:install.packages("RWeka")
- 所有库的帮助格式和样式都是相同的
- 如果您了解R,很容易从一个库切换到另一个库。因此,可以轻松测试所有可用的库,然后使用最适合的库

谢谢您的回复。我实际上知道R语言,但有时候问题不仅在于哪种语言最好,而且还要考虑是否要将另一种语言引入到现有环境中(这意味着必须训练多个人使用该语言)。我有我的理由询问Java,但无论如何感谢您提供的链接。我之前并不知道它们。 - steffen

2

我从未使用过它,但也许MALLET库适合您的需求?


(+1):没有找到那个。看起来很有前途。 - steffen
Mallet本身在自然语言处理方面非常受欢迎。虽然我没有使用过它,但它似乎很可靠,正在积极开发,并且文档相当完善。不过,图形模型似乎是附加在主包中的。 - Stompchicken
@StompChicken 我们如何使用Mallet创建贝叶斯网络? - Siten

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接