9

我正在寻找一个库来创建贝叶斯网络并在 Scala(或 Java,如果缺乏更好的解决方案)中对它们进行学习和推理。该库应该被积极维护,高性能,最好是简单的,绝对有据可查,除非使用非常简单。免费、开源和商业替代方案都可以,但对于商业解决方案,需要免费试用。

一个理想的解决方案相当于 .NET 世界中由 Microsoft Research 提供的 Infer.NET,但有更多文档。

提前致谢!

4

5 回答 5

9

FACTORIE是一个年轻的项目,但它符合要求并在 Scala 中实现:

FACTORIE 是用于可部署概率建模的工具包,在 Scala 中作为软件库实现。它为用户提供了一种简洁的语言,用于创建关系因子图、估计参数和执行推理。

它由Andrew McCallum和他在 UMass 的实验室开发,他们还负责非常有用的MALLET 机器学习工具包

于 2012-02-02T13:34:20.650 回答
4

你可能想看看 SMILE。它是免费的,并且有 Java API。Java 中的其他免费选项是 UnBBayes 和 SamIam。

  • 微笑

    SMILE(结构建模、推理和学习引擎)是一个完全可移植的 C++ 类库,实现了图形决策理论方法,例如贝叶斯网络和影响图,可直接包含在智能系统中。

  • 无贝叶斯

    UnBBayes 是一个用 Java 编写的概率网络框架。它有一个 GUI 和一个具有推理、采样、学习和评估功能的 API。支持BN、ID、MSBN、OOBN、HBN、MEBN/PR-OWL、PRM、结构、参数和增量学习。

  • 山姆

    Samiam 包括两个主要组件:图形用户界面和推理引擎。图形界面让用户可以开发贝叶斯网络模型并以各种格式保存它们。推理引擎支持许多任务,包括:经典推理;参数估计;时空权衡;敏感性分析; 以及基于 MAP 和 MPE 的解释生成。

纯 Scala 和免费选项是 FACTORIE(已经提到)和 Figaro。但费加罗目前缺乏学习部分。

  • Figaro - 概率建模

    Figaro 模型是 Scala 编程语言中的数据结构,可与 Java 互操作,并且可以在任何 Scala 或 Java 程序中直接构建、操作和使用。

于 2012-07-06T18:26:11.527 回答
1

也许班卓琴符合要求?我不确定它的开发有多活跃,但我知道它已经存在了至少几年......(我自己从未使用过它)。

Banjo:使用 Java 对象进行贝叶斯网络推理

于 2012-02-02T16:13:37.640 回答
1

提出了一些 Infer.NET 的 Java 替代方案作为该问题的答案。因此,我认为基本上您是在询问关于 Java 或完全基于 Scala 的解决方案的该问题的后续行动(在 2010 年下半年提出)。

于 2012-02-07T14:21:58.487 回答
1

现在有一个 Scala 库:

https://github.com/danielkorzekwa/bayes-scala

于 2015-01-03T22:02:05.147 回答