1. 程式人生 > >matlab使用FULLBNT工具箱實現貝葉斯網路

matlab使用FULLBNT工具箱實現貝葉斯網路

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.1 0.01 0 0.9 0.9 0.99]);
%畫出建立好的貝葉斯網路
figure
draw_graph(dag)