下面首先介绍一个结构学习方法,接着利用Matlab中的贝叶斯网络工具箱的K2算法学习该贝叶斯网络的结构。有关贝叶斯网络工具箱的使用,请看【Matlab】贝叶斯网络工具箱简介。

问题:服务器数据传送

现有两台服务器(S1和S2),都会单向向用户User传送数据,服务器S1和S2之间也会有数据通讯,但无法确定他们之间的数据流向。数据包的传送只取两种可能值:T=1(成功)或者F=2(失败)。

现有数据如下:

1    2   1
2   2   2
2   1   1
2   1   1
2   1   1
2   1   1
2   2   2
2   1   1
2   1   1
1   2   1
2   1   1
2   1   1
2   1   1
1   2   1
2   2   2
1   2   1
2   2   2
1   2   1
2   2   2
2   1   1
2   1   1
2   1   1
2   1   1
2   1   1
2   2   2
1   1   2
2   2   2
2   1   1
2   1   1
2   1   1
2   1   1
1   2   1
2   1   1
1   2   1
2   1   1
1   2   1
1   2   1
2   1   1
2   1   1
1   2   1
1   2   1
2   2   2
2   1   1
2   2   2
2   1   1
2   1   1
2   1   1
1   2   1
2   1   1
2   2   2
2   1   1
1   2   1
2   1   1
2   1   1
2   1   1
2   2   2
2   1   1
2   2   2
1   2   1
2   1   1
2   2   2
1   1   2
2   1   1
1   2   1
2   1   1
2   2   2
2   1   1
2   2   2
2   1   1
1   1   2
1   2   1
2   2   2
2   1   1
2   1   1
1   2   1
1   2   1
2   1   1
2   1   1
2   1   1
2   1   1
1   2   1
2   2   2
1   1   2
2   1   1
2   1   1
1   2   1
1   1   2
2   1   1
2   1   1
2   1   1
1   2   1
1   2   1
1   2   1
2   1   1
2   2   2
2   1   1
2   1   1
2   1   1
2   1   1
2   1   1

数据含义解释:例如1 2 1,代表服务器S1发送成功,服务器S2发送失败,用户User成功接受到数据。

需要根据上述的数据,学习贝叶斯网络的结构,Matlab代码如下所示。

function [] = h2()%% 读取数据data = load('server_data.txt')';N = size(data,2);%节点的个数%% 分别采用了两种评分函数(贝叶斯评分、BIC评分)根据数据集使用K2算法学习网络结构,并比较网络结构与真实结构的差异。order = 1:N;max_fan_in = 2;%每个节点允许的最大父节点数量ns = 2*ones(1,N); %ns代表每个节点的状态数,这里每个节点都只有两个取值,即一个父节点最多有两个子节点dag1 = learn_struct_K2(data, ns, order, 'max_fan_in', max_fan_in)%dag2 = learn_struct_K2(data, ns, order, 'max_fan_in', max_fan_in, 'scoring_fn', 'bic', 'params', [])meanings = {'s1','s2','user'};%数据含义graph(dag1,meanings);%绘出贝叶斯网络的图像
end%% 绘图
function graph(cm,meanings)%% 去除图中的权重为inf的边for i=1:size(cm,1)for j=1:size(cm,2)if cm(i,j) == infcm(i,j) = 0;endendend%% 设置图显示权重并可视化bg=biograph(cm,meanings);bg.showWeights='on';view(bg);
end

学习到的结构如下所示。

dag1 =0     1     10     0     10     0     0

需要注意的是,由于k2算法是需要先验节点顺序的,所以order参数是假设已知的。通常,我们取1~N,N为节点的个数。更多内容,可以参考一下:贝叶斯网络K2算法及其增量算法的实现(基于matlab FullBNT -1.0.7 )

【Matlab】利用贝叶斯网络工具箱中的K2算法进行结构学习相关推荐

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

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

  2. 专家打分法matlab,针对贝叶斯网络中引入专家评价的先验概率评估方法与流程

    本发明属于故障诊断领域,具体涉及一种针对贝叶斯网络中引入专家评价的先验概率评估方法. 背景技术: :贝叶斯网络作为故障诊断系统中常见的推理算法,网络根节点先验概率的准确程度直接决定着其能否快速定位第一 ...

  3. matlab中nsamples 10,贝叶斯网络-使用matlab工具集

    提纲: 最近工作: B-COURSE工具学习 BNT研究与学习 BNT相关实验及结果 手动建立贝叶斯网及简单推理 参数学习 结构学习 下一步工作安排 最近工作: 1. B-COURSE 工具学习 B- ...

  4. 贝叶斯网络算法java,java贝叶斯网络算法.doc

    java贝叶斯网络算法.doc 贝叶斯网络提纲:最近工作:B-COURSE工具学习BNT研究与学习BNT相关实验及结果手动建立贝叶斯网及简单推理参数学习结构学习下一步工作安排最近工作:1.B-COUR ...

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

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

  6. matlab设l创建网络,利用matlab进行简单的贝叶斯网络构建 | 学步园

    matlab的安装 第一次装matlab,装好后发现没有在桌面生成图标,还以为是最后提示的编译器没有安装.结果发现,matlab的图标在其安装的bin目录下面,进行初始化就能开始使用了 关于贝叶斯网络 ...

  7. matlab bnt(贝叶斯网络)实例

    #matlab bnt下的贝叶斯网络实例 #贝叶斯网络实例#详细教程 1.向matlab中添加FULLBNT 参照链接:https://blog.csdn.net/moodytong/article/ ...

  8. matlab 贝叶斯网络

    第一次搭建,参考教程https://blog.csdn.net/moodytong/article/details/8122327. 我的matlab是2014a.系统win7旗舰. 下面就开始一步一 ...

  9. 贝叶斯网络之父Judea Pearl力荐、LeCun点赞,这篇长论文全面解读机器学习中的因果关系...

    来源:机器之心 作者:Bernhard Schölkopf 图灵奖得主.贝叶斯网络之父 Judea Pearl 曾自嘲自己是「AI 社区的反叛者」,因为他对人工智能发展方向的观点与主流趋势相反.Pea ...

最新文章

  1. 【字符串系列】字符串匹配中的位并行算法
  2. Linux I/O 那些事儿
  3. hadoop中setup,cleanup,run和context讲解
  4. java工具类使用逗号切割字符串_【java】分割字符串工具类,霸气 jdk自带的
  5. excel制作一个信息录入系统_Excel数据总是重复录入?使用这招,让系统帮你做检查,非常实用...
  6. 开发者的盛宴Google I/O 2016
  7. SSM框架下的注册验证
  8. 兄弟HL4150cdn恢复出厂设置_兄弟打印机恢复出厂设置
  9. 物联网MT2625芯片平台技术参考资料
  10. HashMap底层特性全解析
  11. Python深度学习(3):波士顿房价预测
  12. JarvisOJ 逆向Writeup
  13. 潘金莲写给比尔盖茨的情书
  14. 蒲公英 · JELLY技术周刊 Vol.29: 前端智能化在阿里的那些事
  15. Android之获取手机内部及sdcard存储空间
  16. 为什么有的程序员能力一般却能拿到好offer?
  17. 网页html5播放器,一个强大的开源HTML5视频播放器,字节出品
  18. C语言递归实现汉诺塔
  19. u盘插电脑计算机卡了,为什么u盘一连接电脑就卡_电脑一连接u盘就卡的处理办法...
  20. 使用百度API实现实时公交线路查询及列表显示

热门文章

  1. ipad如何改造成linux终端,如何实现让ipad上使用终端terminal
  2. 计算机应用与基础教学计划,《计算机应用基础》教学计划
  3. 特征多项式、代数重数与几何重数
  4. Oracle 12c数据库优化器统计信息收集的最佳实践
  5. Android 保存号码至已有联系人,新建联系人,读取手机联系人
  6. unity 微信支付
  7. linux www服务器配置
  8. flowable流程引擎基础概念总结
  9. deeplabv3+训练自己的数据集
  10. 指针数组和数组指针有什么区别?