Matlab2010下使用FULLBNT工具箱实现简单的静态贝叶斯网络及推理

原文地址:http://blog.sina.com.cn/s/blog_6c7b434d01013ufz.html ,本文在原文基础上有所改动

基于matlab的贝叶斯网络工具箱BNT是kevin p.murphy基于matlab语言开发的关于贝叶斯网络学习的开源软件包,提供了许多贝叶斯网络学习的底层基础函数库,支持多种类型的节点(概率分布)、精确推理和近似推理、参数学习及结构学习、静态模型和动态模型。
贝叶斯网络表示:BNT中使用矩阵方式表示贝叶斯网络,即若节点i到j有一条弧,则对应矩阵中(i,j)值为1,否则为0。


上图是一个草地潮湿原因模型。我们使用matlab画出建立好的贝叶斯网络,可以求出单个节点后验概率和多个节点后验概率。

matlab程序如下:

第一步,建立贝叶斯网络,使用matlab得到上述网络结构。

%建立贝叶斯网络结构
N = 4; %四个节点 分别是cloudy,sprinkler,rain,wetgrass
dag = zeros(N,N);
C = 1; S = 2; R = 3; W = 4;
dag(C,[R S]) = 1; %节点之间的连接关系
dag(R,W) = 1;
dag(S,W) = 1;
discrete_nodes = 1:N; %离散节点
node_sizes = 2*ones(1,N);%节点状态数
bnet =mk_bnet(dag,node_sizes,'names',{'cloudy','sprinkler','rain','wetgrass'},'discrete',discrete_nodes);
bnet.CPD{C} = tabular_CPD(bnet,C,[0.5 0.5]);
bnet.CPD{R} = tabular_CPD(bnet,R,[0.8 0.2 0.2 0.8]);
bnet.CPD{S} = tabular_CPD(bnet,S,[0.5 0.9 0.5 0.1]);
bnet.CPD{W} = tabular_CPD(bnet,W,[1 0.1 0.
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值