我正在寻找一个库来创建贝叶斯网络,并在Scala(或Java,如果没有更好的解决方案的情况下)对它们进行学习和推理。除非用法非常简单,否则应该积极维护,保持性能,最好是简单,明确的文档。免费,开源和商业替代品都可以,但对于商业解决方案,需要免费试用。
一个理想的解决方案就是微软研究院在.NET世界中推出的Infer.NET,但更多的文档记录。
提前致谢!
答案 0 :(得分:9)
FACTORIE是一个年轻的项目,但它符合法案并在Scala中实施:
FACTORIE是可部署概率建模的工具包, 在Scala中作为软件库实现。它为用户提供 一种简洁的语言,用于创建关系因子图,估计 参数和执行推理。
由Andrew McCallum和他在麻省大学的实验室开发,他们也负责这个非常有用的MALLET machine learning toolkit。
答案 1 :(得分: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的解释生成。
Pure Scala和免费选项是FACTORIE(已经提到过)和费加罗。但费加罗目前缺乏学习的部分。
Figaro - Probabilistic Modeling
Figaro模型是Scala编程语言中的数据结构, 可与Java互操作,可以构造,操作, 并直接在任何Scala或Java程序中使用。
答案 2 :(得分:1)
也许班卓适合这项法案?我不确定它是如何开发的,但我知道它至少存在了几年......(从未使用过它)。
答案 3 :(得分:1)
Infer.NET的一些Java替代品被作为this question的答案呈现。所以,我认为基本上你要问的是关于Java或完全基于Scala的解决方案的问题(在2010年下半年被问到)的后续问题。
答案 4 :(得分:1)
现在有一个Scala lib: