fullbnt matlab,FullBNT学习笔记之一(matlab)
首先來看一個草地濕潤模型,Cloudy表示天氣是否多云,C=1(F)表示False,C=2(T)表示True,一下表示均相同,Sprinklet表示灑水車是否出動,Rain表示是否下雨,WetGrass表示草地是否是濕的。旁邊的表格表示各種條件概率。
貝葉斯網絡表示:BNT中使用矩陣方式表示貝葉斯網絡,即若節點i到j有一條弧,則對應矩陣中(i,j)值為1,否則為0。上圖是一個草地潮濕原因模型。我們使用matlab畫出建立好的貝葉斯網絡,可以求出單個節點后驗概率和多個節點后驗概率。
matlab程序如下:第一步,建立貝葉斯網絡,使用matlab得到上述網絡結構
clear;clc;
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);
接下來比如我們想計算灑水器導致草地是濕潤的概率。證據的構成是W=2,enter_evidenc 執行一個雙通道的信息傳遞模式。第一次返回的變量包括修正的結合著證據的引擎,第二次返回的變量包括證據的對數似然。按如下方式計算p=P(S=2|W=2):
我們使用聯合樹引擎,它是所有精確推斷引擎的根本。它可以按如下步驟調用:
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 是你所需要計算的條件概率的條件部分,而marginal_nodes的第二個參數是你所需要的計算的條件概率的概率部分。由以上代碼可以計算條件概率P(S|W=2),儲存在變量marg.T里面。
兩個小例子:
一、直接計算p(W)概率
evidence = cell(1,N);
[engine, ll] = enter_evidence(engine,evidence);
m = marginal_nodes(engine, [W]);
m.T
二、計算聯合概率p(SRW)
evidence = cell(1,N);
[engine, ll] = enter_evidence(engine,evidence);
m = marginal_nodes(engine, [S R W]);
本文在博客點擊打開鏈接基礎上根據自己理解所寫
------------------
祝身體健康,萬事如意
華電北風吹
天津大學計算機科學與技術學院認知計算與應用重點實驗室
天津市衛津路92號
郵編:?300072
原文:http://blog.csdn.net/zhangzhengyi03539/article/details/44041279
總結
以上是生活随笔為你收集整理的fullbnt matlab,FullBNT学习笔记之一(matlab)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab如何画图时去掉陆地点,科学网
- 下一篇: matlab人脸追踪,求大神帮助我这个菜