#matlab bnt下的貝葉斯網路例項
#貝葉斯網路例項#詳細教程
使用簡單的例子,其中節點擊取多個狀態(三個),構造父節點的先驗概率,以及子節點的條件概率,並解釋matlab bnt**:
以下是構建的簡單貝葉斯網路結構圖。其中攻擊能力節點的狀態分為:高、中、低;載彈量節點的狀態分為:多、中、少;目標型別的節點狀態分為:戰鬥機、轟炸機、飛彈;
攻擊能力的先驗概率:攻擊能力為高的概率為30%,攻擊能力為中等的概率為30%,攻擊能力為低的概率為40%。
攻擊能力的條件概率見下圖(注意這個條件概率和大家理解的相反,一般人們的邏輯是彈載量為多,則攻擊能力為高的概率為多少;但這個正好相反)。
在編寫程式時用1,2,3來代表對應節點狀態的少,中,多。接下來就可以進行bnt程式的編寫了。
n =4;
%節點數量
dag =
zeros
(n,n);c=
1; p=2
;m=3;
k=4;%對節點進行排序
dag( c,
[p m k])=
1;%設定節點的網路結構
discrete_nodes =
1:n;
node_sizes=3*
ones(1
,n);
%設定節點的狀態個數,本例的節點狀態數均為3,若不規則也可用[23
33]來描述
draw_graph
(dag)
;%畫出網路
bnet=
mk_bnet
(dag,node_sizes,
'names',,
'discrete'
,discrete_nodes)
;bnet.cpd
=tabular_cpd
(bnet,c,
[0.4
,0.3
,0.3])
;bnet.cpd
=tabular_cpd
(bnet,p,
[0.66
,0.19
,0.10
,0.25
,0.63
,0.19
,0.09
,0.18
,0.71])
;bnet.cpd
=tabular_cpd
(bnet,m,
[0.69
,0.16
,0.11
,0.20
,0.66
,0.22
,0.11
,0.18
,0.67])
;bnet.cpd
=tabular_cpd
(bnet,k,
[0.69
,0.17
,0.13
,0.21
,0.65
,0.19
,0.10
,0.18
,0.68])
;%設定貝葉斯網路,注意和上表的對應情況
%數字小的排在前面,如c和p的條件網路,並且按照c=
1,p=
1;c=
1,p=
2;c=
1,p=3..
.排列engine=
jtree_inf_engine
(bnet)
;%確定推理引擎
evidence=
cell(1
,n);%1
*n的空cell型別向量,元素可以是任意型別資料
evidence
=input
('p='
); evidence
=input
('m='
); evidence
=input
('k=');
%在命令視窗輸入證據
[engine,loglik]
=enter_evidence
(engine,evidence);m=
marginal_nodes
(engine,c)
;z=m.t(
1)bar(m.t)
%畫出各個狀態的概率分布圖
貝葉斯網路
1.貝葉斯網路的定義 貝葉斯網路 bayesian network 又稱信念網路 belief network 或有向無環圖模型 directed acyclic graphical model 是一種概率圖模型,於1985年由judea pearl首先提出。它是一種模擬人類推理過程中因果關係的不確...
貝葉斯網路
一 貝葉斯網路,由乙個有向無環圖 dag 和條件概率表 cpt 組成。貝葉斯網路通過乙個有向無環圖來表示一組隨機變數跟它們的條件依賴關係。它通過條件概率分布來引數化。每乙個結點都通過p node pa node 來引數化,pa node 表示網路中的父節點。乙個簡單的貝葉斯網路,其對應的全概率公式為...
建立貝葉斯網路
博文內容源自 定義貝葉斯網路,必須知道圖形結構和相應引數。考慮下圖的圖形結構 指定上圖的有向無環圖,我們建立乙個屬性矩陣。clc clear 建立貝葉斯網路結構 四個節點號如下 cloudy 1,sprinkler 2,rain 3,wetgrass 4.節點號必須按照拓撲順序編號,即父節點在前子節...