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

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

(t=ture;  f=false)

参数学习代码:

%高级人工智能%

%BNT的参数学习%

N=5;  %四个节点分别是国家政策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,[W B])=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)','过劳死(D)'},'discrete',discrete_nodes);

%手工构造条件概率CPT表

bnet.CPD{C} = tabular_CPD(bnet,C,[0.5 0.5]);

bnet.CPD{U} = tabular_CPD(bnet,U,[0.95 0.01 0.05 0.99]);

bnet.CPD{W} = tabular_CPD(bnet,W,[0.9 0.05 0.1 0.95]);

bnet.CPD{B} = tabular_CPD(bnet,B,[0.3 0.01 0.7 0.99]);

bnet.CPD{D} = tabular_CPD(bnet,D,[0.335 0.3 0.05 0 0.665 0.7 0.95 1]);

%画出建立好的贝叶斯网络

figure

draw_graph(dag)

%手动构造样本数据samples:

nsamples=20000;

samples=cell(N,nsamples);

for i=1:nsamples

samples(:,i)=sample_bnet(bnet);

end

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);

for i=1:N

s=struct(bnet3.CPD{i});

CPT3{i}=s.CPT;

end

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

dispcpt(CPT3{5});

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

CPT=cell(1,N);

for i=1:N

s=struct(bnet.CPD{i});

CPT{i}=s.CPT;

end

fprintf('输出真实的过劳死节点参数:\n');

dispcpt(CPT{5});

运行结果:

ans =

0.4500    0.5500    0.2833    0.6167    0.5500

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

1 1 : 0.3233 0.6767

2 1 : 0.2458 0.7542

1 2 : 0.0488 0.9512

2 2 : 0.0000 1.0000

输出真实的过劳死节点参数:

1 1 : 0.3350 0.6650

2 1 : 0.3000 0.7000

1 2 : 0.0500 0.9500

2 2 : 0.0000 1.0000

结构学习代码:

N=5;%四个节点分别是国家政策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,[W B])=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)','过劳死(D)'},'discrete',discrete_nodes);

%手工构造条件概率CPT表

bnet.CPD{C} = tabular_CPD(bnet,C,[0.5 0.5]);

bnet.CPD{U} = tabular_CPD(bnet,U,[0.95 0.01 0.05 0.99]);

bnet.CPD{W} = tabular_CPD(bnet,W,[0.9 0.05 0.1 0.95]);

bnet.CPD{B} = tabular_CPD(bnet,B,[0.3 0.01 0.7 0.99]);

bnet.CPD{D} = tabular_CPD(bnet,D,[0.335 0.3 0.05 0 0.665 0.7 0.95 1]);

%画出建立好的贝叶斯网络

% figure

% draw_graph(dag)

%手动构造样本数据samples:

nsamples=2000;

samples=cell(N,nsamples);

for i=1:nsamples

samples(:,i)=sample_bnet(bnet);

end

data=cell2num(samples);

%结构学习

order=[1 2 3 4 5];   % 节点次序

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

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)','过劳死(D)'},'discrete',discrete_nodes);

%手工构造条件概率CPT表

bnet2.CPD{C} = tabular_CPD(bnet2,C,[0.5 0.5]);

bnet2.CPD{U} = tabular_CPD(bnet2,U,[0.95 0.01 0.05 0.99]);

bnet2.CPD{W} = tabular_CPD(bnet2,W,[0.9 0.05 0.1 0.95]);

bnet2.CPD{B} = tabular_CPD(bnet2,B,[0.3 0.01 0.7 0.99]);

bnet2.CPD{D} = tabular_CPD(bnet2,D,[0.335 0.3 0.05 0 0.665 0.7 0.95 1]);

figure

draw_graph(dag);  %画出建立好的贝叶斯网络

CPT2=cell(1,N);

for i=1:N

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

CPT2{i}=s.CPT;

end

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

dispcpt(CPT2{5});

运行结果:

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

1 1 : 0.3350 0.6650

2 1 : 0.3000 0.7000

1 2 : 0.0500 0.9500

2 2 : 0.0000 1.0000

Matlab贝叶斯工具箱BNT建模相关推荐

  1. 使用MATLAB贝叶斯工具箱(BNT),进行吉布斯采样(Gibbs Sampling)之前需要做的编译工作...

    使用BNT(Bayesian Networks Toolbox)进行推断时,内置了吉布斯采样算法(即gibbs_sampling_inf_engine),但是如果调用这个引擎做推断会报错.报错内容大概 ...

  2. matlab2016a贝叶斯工具箱,matlab贝叶斯工具箱

    matlab贝叶斯工具箱是由Kevin Murphy开发的编程学习工具,该工具采用MATLAB语言编制,可实现贝叶斯网络结构学习.参数学习.推理和构建贝叶斯分类器,此工具箱在贝叶斯学习编程方面非常灵活 ...

  3. matlab 贝叶斯工具箱,matlab的BNT贝叶斯工具箱错误求教

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 麻烦各位做贝叶斯网络的朋友帮我看看..谢谢了. function [engine, loglik] = enter_evidence(engine, ev ...

  4. Matlab贝叶斯工具箱函数冲突、函数或变量无法识别、箭头无法显示的解决办法

    警告: 函数 assert 与某个 MATLAB 内置函数同名.建议您重命名该函数以避免潜在的名称冲突. 位置:path (第 109 行) 位置: addpath (第 86 行) 要不就是各种函数 ...

  5. matlab贝叶斯编程代码,bnt 基于matlab的贝叶斯工具箱 各种程序与算法,在 网络编程中作为调用 238万源代码下载- www.pudn.com...

    文件名称: bnt下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Others 文件大小: 12067 KB 上传时间: 2014-03-12 下载次数: 1 详细说明:基于matla ...

  6. 安装matlab贝叶斯网络工具箱

    安装matlab贝叶斯网络工具箱 下载工具箱 安装工具箱 安装matlab贝叶斯网络工具箱 1. 下载工具箱 下载链接: 官方下载:http://www.cs.ubc.ca/~murphyk/Soft ...

  7. pymc3 贝叶斯线性回归_使用PyMC3进行贝叶斯媒体混合建模,带来乐趣和收益

    pymc3 贝叶斯线性回归 Michael Johns, Zhenyu Wang, Bruno Dupont, and Luca Fiaschi 迈克尔·约翰斯,王振宇,布鲁诺·杜邦和卢卡·菲亚斯基 ...

  8. 贝叶斯思维 统计建模的Python学习法pdf

    下载地址:网盘下载 编辑推荐 贝叶斯方法正在变得越来越常见与重要,但是却没有太多可以借鉴的资料来帮助初学者.基于Allen Downey在大学讲授的本科课程,本书的计算方法能帮助你获得一个良好的开端. ...

  9. matlab bnt,matlab的BNT贝叶斯工具箱错误求教

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 麻烦各位做贝叶斯网络的朋友帮我看看..谢谢了. function [engine, loglik] = enter_evidence(engine, ev ...

最新文章

  1. python开发要学哪些?
  2. solr系列之solr-5.5.5 window单机版默认Jetty安装
  3. python找水仙花数_Python一句代码实现找出所有水仙花数的方法
  4. 目标检测--Spatial pyramid pooling in deep convolutional networks for visual recognition(PAMI, 2015)
  5. node.js服务器+mongodb数据库(重拾)
  6. 剑指 Offer——和为 S 的两个数字
  7. c/c++ 多线程 ubuntu18.04 boost编译与运行的坑
  8. 将公共云延伸至本地,阿里云推出本地化部署服务云盒Cloud Box
  9. 【十分钟开发物联网】楼宇访客门禁管理(Wifi版)
  10. 【matlab】数值计算实现电路仿真
  11. vue实现在线客服功能(附完整代码)
  12. 【Unity】Unity下载器下载不下IOS/Android等模块的解决办法
  13. cobra是什么鬼?
  14. [pytorch]yolov3.cfg参数详解(每层输出及route、yolo、shortcut层详解)
  15. 爬虫练习(Day4)
  16. zk和quartz实现分布式定时调度
  17. 洛谷 P1710 地铁涨价
  18. 脸部日常护理私家秘方
  19. B2 - H - Historic Exhibition(二分图匹配+优化建图)
  20. 小姐姐想学Python 自动化测试,京东大牛彻夜未眠整理的学习方法!

热门文章

  1. 微信公众号如何上传视频
  2. 常用配置文件(备忘录)
  3. 360腾讯计算机比赛,XP挑战赛:腾讯电脑管家完胜360 XP盾甲
  4. 面向未来的前端框架ThinkJs
  5. 【附源码】计算机毕业设计java学生健康饮食信息管理系统设计与实现
  6. 控制器POX在windows下使用教程
  7. STL关于queue(队列)与priority_queue(优先队列)的一些笔记
  8. 成为阿里P7移动架构师到底有多难?享学课堂java架构师
  9. SRGNN番外篇——我的死磕笔记
  10. css flexbox模型_通过Flexbox Froggy游戏自学CSS Flexbox