【问题标题】:Bayesian networks in Scala [closed]Scala 中的贝叶斯网络 [关闭]
【发布时间】:2012-02-25 02:54:09
【问题描述】:

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

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

提前致谢!

【问题讨论】:

标签: java scala machine-learning bayesian-networks


【解决方案1】:

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

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

它由 Andrew McCallum 和他在 UMass 的实验室开发,他们还负责开发非常有用的 MALLET machine learning toolkit

【讨论】:

  • FACTORIE 可能很棒,但它并不简单——至少对我来说是这样——而且文档远远达不到要求......无论如何+1
  • FACTORIE 是否支持开箱即用的贝叶斯网络?
  • 我在 FACTORIE 上度过了过去 24 小时,我几乎准备好运行朴素贝叶斯算法(我认为)。我真的很喜欢这个组织但是文档是严重缺乏,正如@em70提到的那样
【解决方案2】:

您可能想研究一下 SMILE。它是免费的,并且有 Java API。 Java 中的其他免费选项包括 UnBBayes 和 SamIam。

  • SMILE

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

  • UnBBayes

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

  • SamIam

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

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

  • Figaro - Probabilistic Modeling

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

【讨论】:

    【解决方案3】:

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

    Banjo: Bayesian Network Inference with Java Objects

    【讨论】:

      【解决方案4】:

      Infer.NET 的一些 Java 替代方案已作为对 this question 的回答提出。所以,我认为基本上你是在询问关于 Java 或完全基于 Scala 的解决方案的该问题的后续行动(在 2010 年下半年提出)。

      【讨论】:

        【解决方案5】:

        现在有一个 Scala 库:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-04-08
          • 2019-07-11
          • 2011-01-09
          • 2012-07-14
          • 2013-05-11
          • 2013-07-19
          • 2019-11-05
          相关资源
          最近更新 更多