贝叶斯网络工具Hugin api的使用
由于做毕设的需要,最近一直在研究Hugin Expert,一个关于贝叶斯网络的软件,今天有一些眉目,总结一下,方便自己也方便他人。
Hugin Expert是一款商业软件,提供c、c++、java、.net的api支持,并且有免费的Hugin lite使用,它的贝叶斯网络支持离散和连续的节点,支持表达式和高斯分布。这是我找了很多软件后最终选择Hugin的原因。
由于我的毕设打算用java做,所以我开始只看java的api,没想到这该死的java api文档竟然没有一点例子,郁闷得我不行,上网找也没找到有用的信息。几天后,一个偶然的机会让我打开了.net的api,竟然发现其中有例子,而且还很详细,惊喜之余赶紧看,终于看明白了。然后就是把.net的转为java就行了,这难不倒我,java和.net我都比较熟,应该没什么问题。下面就讲讲我用得到的一些东西。
在api中,用到最多的就是Domain这个类了,它就是指一个贝叶斯网络,可以通过getNodes()方法获得其中的所有节点。Node代表贝叶斯网络中的一个节点,它是一个基类,子类包括 ContinuousChanceNode, DiscreteNode, InstanceNode, UtilityNode。其中 ContinuousChanceNode顾名思义就是连续节点了,DiscreteNode顾名思义就是离散节点,UtilityNode就是工具节点,InstanceNode,我目前还没有用到它。DiscreteNode还有子类 DiscreteChanceNode, DiscreteDecisionNode,最长用到的是DiscreteChanceNode。
构建一个贝叶斯网络,可以通过载入某个文件,也可以新建一个网络,下面的代码演示,载入一个网络:Domain domain = new Domain("C:\\Program Files\\Hugin Expert\\Hugin Lite 7.0\\Samples\\fire.net", new DefaultClassParseListener());,新建一个网络更简单,只要调用Domian的无参构造就好了。
现在由于自己也研究得不是很通,就不多做叙述了,贴一下代码:
package com.ssdut.wangyou;
import COM.hugin.HAPI.*;
public class LoadAndRun {
public static void main(String[] args) throws ExceptionHugin {
Domain domain = new Domain("C:\\Program Files\\Hugin Expert\\Hugin Lite 7.0\\Samples\\fire.net", new DefaultClassParseListener());
domain.openLogFile("mylog.log");
domain.compile();
domain.closeLogFile();
domain.propagate(Domain.H_EQUILIBRIUM_SUM, Domain.H_EVIDENCE_MODE_NORMAL);
DiscreteChanceNode node = (DiscreteChanceNode)domain.getNodeByName("Fire");
node.selectState(1);
PrintNodeMarginals(domain);
}
public static void PrintNodeMarginals(Domain domain) throws ExceptionHugin
{
NodeList nlist = domain.getNodes();
for(int i=0; i< } node.getBelief(j))); + ? node.getStateLabel(j) System.out.println((?-? { j++) nStates; < j="0;" (int for System.out.println(node.getLabel()); nStates="node.getNumberOfStates();" int node="(DiscreteChanceNode)nlist.get(i);" DiscreteChanceNode i++)> 上面的代码是载入一个网络,然后将名为Fire的节点设为证据,然后再显示所有节点的概率。如果有研究Hugin Expert,我们可以一起探讨,请留言。

本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名小橋流水(包含链接)。如您有任何疑问或者授权方面的协商,请给我发邮件。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述