bnt_1 一个用于贝叶斯网络的matlab的工具

N = 4 ;
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 ;
 
node_sizes = 2 * ones( 1 ,N);
% node_sizes = [ 4 2 3 5 ];
 
% 建立有向无环图
onodes = [];
bNet = mk_bnet( dag, node_sizes );
 
% 建立条件概率表
bNet.CPD{C} = tabular_CPD( bNet, C, 'CPT' , [ 0.5 0.5 ] );
bNet.CPD{R} = tabular_CPD( bNet, R,  'CPT' ,[ 0.8 0.2 0.2 0.8 ] );
bNet.CPD{S} = tabular_CPD( bNet, S,  'CPT' , [ 0.5 0.9 0.5 0.1 ] );
bNet.CPD{W} = tabular_CPD( bNet, W, 'CPT' , [ 1 0.1 0.1 0.01 0 0.9 0.9 0.99 ] );
   
 
 
% 用于推断
engine = jtree_inf_engine( bNet);
 
evidence = cell( 1 ,N );
evidence{W} = 2 ;
 
% 添加证据
[engine, loglik] = enter_evidence( engine, evidence );
marg = marginal_nodes( engine, S );
p = marg.T( 2 );
 
% 添加下雨的证据
evidence{R} = 2 ;
[ engine, loglik ] = enter_evidence( engine, evidence );
marg = marginal_nodes( engine, S );
p = marg.T( 2 );
 
bar( marg.T );
 
 
% Joint distributions
evidence = cell( 1 ,N);
[engine, ll] = enter_evidence(engine, evidence);
m = marginal_nodes(engine, [S R W]);
m.T
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值