【人工智能】贝叶斯网络之结构、参数学习

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

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值