1、上一篇百度文库的代码
(http://my.oschina.net/SnifferApache/blog/343756#OSC_h1_11)
N = 5;
dag = zeros(N,N);
B = 1; E = 2; A = 3; R=4;W = 5;
dag(B,A) = 1;
dag(E,[A R]) = 1;
dag(A,W) = 1;
discrete_nodes = 1:N;
node_sizes = 2*ones(1,N);
bnet =mk_bnet(dag,node_sizes,'names',...
{'bandits','earthquake','broadcast','bells','telephone'},...
'discrete',discrete_nodes);
bnet.CPD{B} = tabular_CPD(bnet,B,[0.9 0.1]);
bnet.CPD{E} = tabular_CPD(bnet,E,[0.99 0.01]);
bnet.CPD{W} = tabular_CPD(bnet,W,[0.99 0.35 0.01 0.65]);
bnet.CPD{R} = tabular_CPD(bnet,R,[0.999 0.01 0.001 0.99]);
bnet.CPD{A} = tabular_CPD(bnet,A,[0.99 0.1 0.1 0.01 0.01 0.9 0.9 0.99]);
figure
draw_graph(dag)
%计算铃声响,家中有贼的概率 %按如下方式计算p=P(B=2|A=2):
engine = jtree_inf_engine(bnet);
evidence = cell(1,N); evidence{A} = 2;
[engine, loglik] = enter_evidence(engine, evidence);
marg = marginal_nodes(engine, B);
p11 = marg.T(2);
%添加华生致电福尔摩斯的这一条信息,也就是计算p=P(B=2|A=2,w=2):
evidence{W} = 2;
[engine, loglik] = enter_evidence(engine, evidence);
marg = marginal_nodes(engine, B);
p12 = marg.T(2)
%得出p12=0.8412 ,与p11相同
%计算铃声响,家里地震的概率 %按如下方式计算p=P(E=2|A=2):
engine = jtree_inf_engine(bnet);
evidence = cell(1,N);
evidence{A} = 2;
[engine, loglik] = enter_evidence(engine, evidence);
marg = marginal_nodes(engine, E);
p21 = marg.T(2);
%添加广播的这一条信息,也就是计算p=P(E=2|A=2,R=2):
evidence{R} = 2;
[engine, loglik] = enter_evidence(engine, evidence);
marg = marginal_nodes(engine, E);
p22 = marg.T(2);
%添加华生致电福尔摩斯的这一条信息,也就是计算p=P(E=2|A=2,R=2,W=2):
evidence{W

本文介绍了贝叶斯网络的学习过程,包括参数学习和结构学习。通过使用MATLAB工具BNT,展示了如何从数据中学习网络参数,并探讨了不同结构学习算法的应用。同时,提供了两个人工智能练习题,涉及实际的贝叶斯网络建模和非线性分类问题。

最低0.47元/天 解锁文章
1542

被折叠的 条评论
为什么被折叠?



