本文主要参考:
以及自己对该工具箱的一点认识。通过借助该工具箱中的一个测试函数 k2demo1.m 了解整个贝叶斯网络工具箱的使用。
1.给定一个贝叶斯网络结构
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;
2.给定该贝叶斯网的条件概率表(即参数)
ns = 2*ones(1,N); %每个节点都只有两个取值,即一个父节点最多有两个子节点
false = 1;
true = 2;
bnet = mk_bnet(dag, ns);%构造贝叶斯网络
%如果我们不指定CPT,那么算法会构造随机参数,每一列CPT会从均匀分布中提取。
bnet.CPD{C} = tabular_CPD(bnet, C, [0.5 0.5]);%已知CPD,构造CPT
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]);
3.根据定义的贝叶斯网来生成随机采样的数据集
seed = 0;
rand(‘state’, seed);%state 0 指的是以后产生的随机