最简单的贝叶斯网络构建示例

  • 如下图所示,贝叶斯网络结构有四个节点,并且每个节点的概率已经给出,下面将使用mtaltb代码进行该贝叶斯网络的构建并讲解每一行代码的意思,帮助零基础读者快速入门。
    最简单的贝叶斯网络构建示例_第1张图片
  • 1:使用矩阵表示该图结构
N = 4 ; // 代表图中有四个节点
dag = zeros(N,N); // 创建4X4矩阵,用来表示图的连通情况,可看数据结构有向图表示的相关内容
C=1;S=2;R=3;W=4;  //指定节点的顺序
dag(C,[S,R]) = 1  ;  //1代表连通 该行代码表示C节点可到达S、R节点
dag([S,R],W) = 1 ; //该行代码表示S、R节点可到达W节点
  • 2:离散化节点
discrete_nodes = 1:N ;   //离散化节点
node_sizes = [2,2,2,2];  //该行代码代表每个节点有True和False两个判别方式
  • 3:创建贝叶斯结构
bnet = mk_bnet(dag,node_sizes);   //创建贝叶斯结构
  • 4:设置各节点参数
bnet.CPD{C} = tabular_CPD(bnet,C,[0.5,0.5]) ; // 设置C节点的参数
bnet.CPD{S} = tabular_CPD(bnet,S,[0.5,0.9,0.5,0.1]) ; //设置S节点的参数
bnet.CPD{R} = tabular_CPD(bnet,R,[0.8,0.2,0.2,0.8]) ; //设置R节点的参数
bnet.CPD{W} = tabular_CPD(bnet,W,[1,0.1,0.1,0.01,0,0.9,0.9,0.99]); //设置W节点的参数
  • 5:图像化贝叶斯网络
G=bnet.dag;
draw_graph(G);

最简单的贝叶斯网络构建示例_第2张图片

你可能感兴趣的:(机器学习及数据挖掘)