首页 > 编程知识 正文

贝叶斯检测matlab实现,蒙特卡洛模拟matlab

时间:2023-05-06 11:28:44 阅读:155320 作者:1569

利用matlab的贝叶斯工具箱BNT完成以下“过劳死”问题的建模:

使用BNT工具箱的贝叶斯结构、参数学习命令。

(t=ture; f=false )

参数学习代码:

%高级人工智能%

%BNT的参数学习%

N=5; % 4个节点分别为国家政策c、学校政策u、工作压力大w、身体不适b、过劳死d

Dag=Zeros(n,n ); %网络连接矩阵初始化

C=1; U=2; W=3; B=4; D=5; 初始化%节点顺序

Dag(c,u )=1; 定义%节点之间的连接关系

Dag(u,[WB] )=1;

Dag(w,d )=1;

Dag(b,d )=1;

discrete_nodes=1:N; %离散节点

node_sizes=2*Ones(1,n ); %节点状态数

%建立网络体系结构

bnet=MK_bnet(Dag,node_sizes,' names ',{ '国家政策(c ),'学校政策(u ),'工作压力大' w ),'身体不适' b ),'过劳死

%手动构建条件概率CPT表

bnet.CPD{c}=tabular_CPD(bnet,c,[0.50.5];

Bnet.CPD{u}=Tabular_CPD(Bnet,u,[0.950.010.050.99] );

bnet.CPD{w}=tabular_CPD(bnet,w,[0.90.050.10.95];

bnet.CPD{b}=tabular_CPD(bnet,b,[0.30.010.70.99];

bnet.CPD{d}=tabular_CPD(bnet,d,[0.3350.30.0500.6650.70.951];

%绘制构建的贝叶斯网络

图形

draw_graph(Dag )是

手动创建%示例数据samples :

nsamples=20000;

samples=cell(n,nsamples );

fori=1:nsamples

samples(3360,I )=sample _ bnet (bnet );

结束

data=cell2num(samples );

bnet2=MK_bnet(Dag,node_sizes,' discrete ',discrete_nodes );

%手动创建条件概率表cpt

seed=0;

rand(state )、seed );

bnet2.CPD{c}=tabular_CPD(bnet2,c );

bnet2.CPD{u}=Tabular_CPD(bnet2,u );

bnet2.CPD{w}=tabular_CPD(bnet2,w );

bnet2.CPD{b}=tabular_CPD(bnet2,b );

bnet2.CPD{d}=tabular_CPD(bnet2,d );

%将手动构建的示例作为训练集代入learn_params ()函数进行学习

bnet3=learn_Params(bnet2,data );

%查看学习后的参数

CPT3=cell(1,n );

fori=1:N

s=struct(Bnet3.CPD{I} );

CPT3{i}=s.CPT;

结束

fprintf (输出学习后的过劳死节点参数(n ) );

dispCPT{1}{2}CPT3{3};

%查看原始节点参数后的参数

CPT=cell(1,n );

fori=1:N

s=struct(Bnet.CPD{I} );

CPT{i}=s.CPT;

结束

fprintf (输出实际过劳死节点参数(n );

disp CPT {2} CPT {3} {4};

执行结果:

ans=

0.45000.55000.28330.61670.5500

输出学习后的过劳死节点参数:

11:0.32330.6767

21:0.24580.7542

12:0.04880.9512

22:0.00001.0000

输出实际过劳死节点参数:

11:0.33500.6650

21:0.30000.7000

12:0.05000.9500

22:0.00001.0000

结构学习代码:

N=5; % 4个节点分别为国家政策c、学校政策u、工作压力大w、身体不适b、过劳死d

Dag=Zeros(n,n ); %网络连接矩阵初始化

C=1; U=2; W=3; B=4; D=5; 初始化%节点顺序

Dag(c,u )=1; 定义%节点之间的连接关系

Dag(u,[WB] )=1;

Dag(w,d )=1;

Dag(b,d )=1;

discrete_nodes=1:N; %离散节点

node_sizes=2*Ones(1,n ); %节点状态数

%建立网络体系结构

bnet=MK_bnet(Dag,node_sizes,' names ',{ '国家政策(c ),'学校政策(u ),'工作压力大' w ),'身体不适' b ),'过劳死

%手动构建条件概率CPT表

bnet.CPD{c}=tabular_CPD(bnet,c,[0.50.5];

Bnet.CPD{u}=Tabular_CPD(Bnet,u,[0.950.010.050.99] );

bnet.CPD{w}=tabular_CPD(bnet,w,[0.90.050.10.95];

bnet.CPD{b}=tabular_CPD(bnet,b,[0.30.010.70.99];

bnet.CPD{d}=tabular_CPD(bnet,d,[0.3350.30.0500.6650.70.951];

%绘制构建的贝叶斯网络

%figure

是%draw_graph(Dag )

手动创建%示例数据samples :

nsamples=2000;

samples=cell(n,nsamples );

fori=1:nsamples

samples(3360,I )=sample _ bnet (bnet );

结束

data=cell2num(samples );

%结构学习

order=[12345]; %节点顺序

ns=[22222]; %节点属性值的个数

max_fan_in=2; %最大父节点数

dag2=learn_struct_K2(data,ns,order,' max_fan_in ',max_fan_in );

bnet2=MK_bnet(Dag2,node_sizes,' names ',{ '国家政策(c ),'学校政策(u ),'工作压力大' w ),'身体不适' B ),'过度劳累

%手动构建条件概率CPT表

bnet2.CPD{c}=tabular_CPD(bnet2,c,[0.50.5] );

bnet2.CPD{u}=Tabular_CPD(bnet2,u,[0.950.010.050.99] );

bnet2.CPD{w}=tabular_CPD(bnet2,w,[0.90.050.10.95];

bnet2.CPD{b}=tabular_CPD(bnet2,b,[0.30.010.70.99];

bnet2.CPD{d}=tabular_CPD(bnet2,d,[0.3350.30.0500.6650.70.951] );

图形

draw_graph(Dag ); %绘制构建的贝叶斯网络

CPT2=cell(1,n );

fori=1:N

s=struct(bnet2.CPD{I} );

CPT2{i}=s.CPT;

结束

fprintf (输出结构学习后过劳死节点参数(n );

dispCPT{1}{2}CPT2{3};

执行结果:

输出结构学习后的过劳死节点参数:

11:0.33500.6650

21:0.30000.7000

12:0.05000.9500

22:0.00001.0000

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。