贝叶斯网络matlab编程例子?

azyc414 2010-05-23 03:17:18
谢谢谢谢啊
...全文
878 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lvyiqing 2012-09-18
  • 打赏
  • 举报
回复
想学习一下,看看
HimeTale 2011-12-07
  • 打赏
  • 举报
回复

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
Tony2251 2010-05-25
  • 打赏
  • 举报
回复
那么专业。
有算法自己实现一下就是了。

2,161

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 UNIX文化
社区管理员
  • UNIX文化社区
  • 文天大人
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧