在Python环境下使用pgmpy构建动态贝叶斯网络并进行参数学习(附详细代码)

2023-11-03

首先列举当前主要构建贝叶斯网络的一些工具:

1. 软件:Netica、SMILE

2. MATLAB包:BNT

3. Python包:pgmpy、libpgm、pomegranate

4. R包:dbnlearn

如果是单纯的进行贝叶斯网络的学习与推理的话,那我建议用Netica或者是pgmpy这两个。其中Netica软件中文教程比较多,教育版免费使用,而且不需要写代码,只用鼠标操作即可(除了贝叶斯网络还可以很方便的手动构建动态贝叶斯网络),但是要注意这个软件是在windows系统下面的。如果是在Python环境下的话,我强烈推荐pgmpy包,因为这个pgmpy目前还有作者在进行日常维护,内部的样例代码也很好用,给作者发邮件也会得到很好的解答,而且这个包还有一个gitter的group讨论,代码也很简单,初学者很容易上手,比较适合在Python环境下有后续任务需要调用贝叶斯网络输出结果的情况。

用pgmpy进行参数学习的代码我就不放了,因为在pgmpy的github主页上已经有很详细的BN参数学习包括推理的的代码了,直接按需要修改就行。

但是关于动态贝叶斯网络(Dynamic Bayesian Network)DBN目前在pgmpy官方教程里只有通过设置CPD的方式进行后续推理而没有进行参数学习/结构学习的方法,询问过作者是因为在DBN上进行参数学习还是有些困难的。pgmpy的这个动态贝叶斯网络参数学习的问题我发现不论是在中文还是英文社区里都没有人去做这个事情。所以通过询问作者,现在在这个pgmpy包下进行DBN参数学习的唯一解决方法就是将DBN根据你设计的连接关系展开,比如说将一个动态贝叶斯网络展开成为一个具有两个时间片的普通静态贝叶斯网络(2 time slice BN, 2-TBN),相较于单个贝叶斯网络,这种展开形式多了两个时间片之间的状态转移的CPD。展开之后剩下的就是按照原来作者给的示例程序里面的普通贝叶斯网络进行相应的参数学习就行了。

用过pgmpy的看到这里基本上就知道这个问题怎么解决了,具体的代码我后面再写CSDN的时候补上。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python环境下使用pgmpy构建动态贝叶斯网络并进行参数学习(附详细代码) 的相关文章

随机推荐

  • Git Stash 贮藏命令

    文章目录 一 前言 二 git stash命令演示 三 git stash命令总结 一 前言 在使用Git过程中 有时当你在项目的其它分支正在进行开发 并且该分支还尚未开发完成进行提交 这个时候需要你切换分支进行工作 这个时候做到一半的工作
  • 如何快速确认代码是否被编译链接

    1 应用场景 1 在大型项目中 通过编译选项可以编译成不同平台 不同分支的程序 2 编译出来不同的程序 原因就是编译链接了不同的头文件和源代码 比如 工程中不同路径下存在多份同名文件 文件里通过宏定义有多个代码分支 2 确认方法 2 1 分
  • Qcom 平台 camera 之 RAW+YUV图抓取

    目录 前言 抓取注意事项 dumping mask bit 定义 Andorid5 8 HAL1 拍照 RAW 调试 抓取拍照 RAW 图 Android9 0 Android9 0 HAL1 preview RAW 操作步骤 抓取的脚本
  • 【Docker实践】Docker中使用 Dockerfile 构建自己的镜像并运行redis

    Docker实践 Docker中使用 Dockerfile 构建自己的镜像并运行redis 资源 docker redis 镜像官网 1 获取redis的配置文件 2 添加 Dockerfile 文件 3 添加运行脚本 问 如何解决报错 u
  • 苹果账号申请流程——99刀(个人版或公司版 ),299刀(企业版)

    APPLE的政策是 要发布到APP STORE必须用99美元的个人版或公司版Apple Developer Programs 要在非商店外下载只能使用299美元的企业版iOS Developer Enterprise 开发者证书目前有三种
  • mybatis的二级缓存你了解多少

    缓存机制 Mybatis提供查询缓存 如果缓存中有数据就不用从数据库中获取 用于减轻数据压力 提高系统性能 Mybatis的查询缓存总共有两级 我们称之为一级缓存和二级缓存 一级缓存是SqlSession级别的缓存 在操作数据库时需要构造s
  • GLES3.0中文API-glGetAttribLocation

    返回目录 openglES3 0中文API list 名称 glGetAttribLocation 返回属性变量的位置 C规范 GLint glGetAttribLocation GLuint program const GLchar na
  • ttf字体取点阵字模

    ttf是矢量字体 freetype2可以解析并操作ttf格式字体 利用它可实现ttf字体提取点阵字模c源代码文件及头文件 软件界面如下 字框为假象字符边框尺寸 字符尺寸为实际字符尺寸 通常一致即可 碰到有些偏小字体可以适当调大字框尺寸 软件
  • 电子工程师的自我修养 - 整流桥

    基本介绍 利用二极管的单向导电性将正负变化的交流电压变为单向脉动电压的电路 在交流电源的作用下 整流二极管周期性地导通和截止 使负载得到脉动的直流电 工作原理 在整流桥的每个工作周期内 同一时间只有两个二极管进行工作 因此我们可以将整流器工
  • fiddler接口基础

    为什么要先学fiddler 学习接口测试必学http协议 如果直接先讲协议 我估计小伙伴们更懵 为了更好的理解协议 先从抓包开始 结合抓包工具讲http协议更容易学一些 抓firefox上https请求 fiddler是一个很好的抓包工具
  • 小理解

    一 数组指针 数组名本身就是一个指针 指向数组的首地址 如int p 10 表示一个指向10个int元素的数组的一个指针 注意这是声明定长数组时 其数组名指向的数组首地址是常量 而声明数组并使某个指针指向其值指向某个数组的地址 不一定是首地
  • 堆栈详解

    堆区 1 存储的全部是对象 每个对象都包含一个与之对应的class的信息 class的目的是得到操作指令 2 jvm只有一个堆区 heap 被所有线程共享 堆中不存放基本类型和对象引用 只存放对象本身 栈区 1 每个线程包含一个栈区 栈中只
  • 程序设计的基本概念

    程序设计的基本概念 1 程序 2 结构化程序设计 1 程序 由高级语言编写的程序称为 源程序 由C语言编写的程序扩展名为 C 经过 编译 目标程序 后生成文件的扩展名为 obj 经过 链接 可执行程序 后生成文件的扩展名为 exe C语言源
  • System.Net.HttpListenerException (0x80004005): 拒绝访问。

    C 生成的exe突然报错了 原来是被人改了权限配置 我也没改回来 只需要将生成的exe设置成管理员身份运行 往后就不会再报错了
  • 15个免费学习JavaScript的最佳网站

    JavaScript是Web最流行的语言 对于任何Web开发人员来说 JavaScript现在是必须学习的语言 像追踪树这样的创新已经大大提高了JavaScript的性能 并且它在所有开发人员中越来越受欢迎 如果您想要事业得到进一步的发展
  • Python 基础——range() 与 np.arange()

    range 返回的是range object 而np arange 返回的是numpy ndarray type np arange 10 np ndarray 两者都是均匀地 evenly 等分区间 range尽可用于迭代 而np ara
  • Images之Dockerfile中的命令2

    COPY COPY has two forms COPY chown
  • cocos2dx中毒冰冻shader

    中毒效果 ifdef GL ES precision mediump float endif uniform sampler2D u texture varying vec2 v texCoord varying vec4 v fragme
  • 《深入理解Java函数式编程》系列文章

    Introduction 本系列文将帮助你理解Java函数式编程的用法 原理 本文受启发于JavaOne 2016关于Lambda表达式的相关主题演讲Lambdas and Functional Programming和Refactorin
  • 在Python环境下使用pgmpy构建动态贝叶斯网络并进行参数学习(附详细代码)

    首先列举当前主要构建贝叶斯网络的一些工具 1 软件 Netica SMILE 2 MATLAB包 BNT 3 Python包 pgmpy libpgm pomegranate 4 R包 dbnlearn 如果是单纯的进行贝叶斯网络的学习与推