dbnR是R语言中动态贝叶斯网(DBN)的工具箱,与2020年3月底发行,是很新的工具箱了。这个工具箱和bnlearn是一脉相承的,其中很多函数需要用到bnlearn里面的函数。因此在安装dbnR之前需要安装bnlearn工具箱

关于dbnR的详细信息可见:

dkesada/dbnR​github.com

以下是具体函数的解释

  1. acc_successions 与 node_levels

node_levels用来获得每个节点的level,level是这样定义的:根节点的level是0,其它节点的level是它父节点中level的最大值加一。

acc_successions返回一个每个level中节点的数量的向量

2. add_attr_to_fit 把均值和协方差矩阵作为属性添加到bn.fit的结果(训练好参数的网络)中,目的是为了之后能精确地进行MVN推理

3. approximate_inference 给定训练好结构和参数的网络,以及数据集和网络大小(貌似是时间片的数量),和推断起始的变量,进行近似推理

4. approx_prediction_step 给定一个已经训练好结构和参数的网络,以及一些证据变量,在单个时间片内进行近似推理

5. calc_mu 计算线性高斯网络中节点的均值,返回的是一个向量,前提是网络已经用bnlearn中的函数bn.fit拟合出网络参数

6. calc_sigma 计算线性高斯网络的协方差矩阵

7. check_time0_formatted 检查变量名是不是在t0时刻的名称都格式化了,以 _t_0结尾就行

8. create_blacklist 创建黑名单,使得后续用dmmhc学习网络DBN结构时这些节点间不会出现弧,可以是片内弧,也可以是片间弧

9. dynamic_ordering 得到时间片内节点间的拓扑排序(当然每个时间片都一样......)

10. exact_inference 和 approximate_inference 用法相似,这个是精确推理

11. exact_prediction_step 和 approx_prediction_step 用法相似,这个是精确推理

12. expand_time_nodes 将节点名称扩展到给定的最大值,并获得每个时间片中节点的顺序

13.fit_dbn_params 给定DBN的结构,拟合任意n阶动态贝叶斯网的参数,阶数及参数拟合方法可以自定

14. fold_dt 扩展数据集,导入数据后用这个函数,并规定阶数,之后再学习网络结构的时候,就会用扩展后的数据集学习,考虑到前几个时间片上的数据

15. fold_dt_rec 和 fold_dt做的事是一样的,只不过这个是递归版本的

16. forecast_ts 和 approximate_inference,exact_inference 类似,也是推断变量的值用的,可以选择近似推断或精确推理、

17. learn_dbn_struc 从数据集中学习DBN的结构,可以任意阶网络,用的方法是rsmax2,参考bnlearn的rsmax2函数的参数

18. merge_nets 给定静态网络(片内网络结构),和状态转移网络,把它们融合成DBN

19. motor 标准数据集,是关于电机温度的多变量时间序列数据集,3000行12列

20. mvn_inference 给定证据变量后用多元正态分布进行推理,将线性高斯网络转化为它的多元正态分布的形式

21. plot_dynamic_network 以分层的形式画出DBN的网络结构

22. predict_bn 对高斯贝叶斯网进行推理,常用于MAP问题

23. predict_dt 对测试数据集执行推断,绘制结果并给出结果准确性的度量

24. time_rename 对数据集的每一列重命名,让它们以_t_0结尾,这样后面用fold_dt时就很方便


再放一个例子吧,快速入门挺好的,当然那个Github的链接里也有

library(dbnR) #导入dbnR包
data(motor) #dbnR里面自带的数据集
size <- 3 #时间片为3,也就是马尔可夫阶数为2
dt_train <- motor[200:2500] #训练集
dt_val <- motor[2501:3000] #测试集
net <- learn_dbn_struc(dt_train, size) #DBN结构学习
plot_dynamic_network(net) #画出网络结构(需要visNetwork和graphics包)
f_dt_train <- fold_dt(dt_train, size) #把数据折叠一下,为参数学习做准备;原数据是#2301行,12列,折叠后为2299行,36列(三个叠在一起嘛),要注意的是,时间线上最#后的数据在折叠后是放在最前面的
fit <- fit_dbn_params(net, f_dt_train, method = "mle") #按极大似然拟合参数

就学习好网络了

如果想要用学习好的网络做预测

test_fold=fold_dt(dt_val,size = 3) #准备好测试数据
res=predict_dt(fit,test_fold,obj_nodes = c("u_q_t_0","u_q_t_1","u_q_t_2"))
#对u_q进行预测,要假设"u_q_t_0","u_q_t_1","u_q_t_2"都是待预测的变量,因为它们本质是一个量,只是时间平移了一下,如果只假设一个未知,实际上还是知道u_q的值的

画出预测结果

看起来还不错 :)

predict函数 R_R语言 动态贝叶斯网工具箱 dbnR学习笔记相关推荐

  1. 贝叶斯网的R实现( Bayesian networks in R)bnlearn(4)

    贝叶斯网络的推理(inference) (1)推理问题 在了解如何构造贝叶斯网络之后,下面我们考虑如何利用贝叶斯网络来进行推理.贝叶斯网络的推理是对某些变量当给定其它变量的状态作为证据时如何推断它们的 ...

  2. 贝叶斯网专题12:参数学习之贝叶斯估计

    第一部分:贝叶斯网基础 1.1 信息论基础 1.2 贝叶斯网基本概念 1.3 变量独立性的图论分析 第二部分:贝叶斯网推理 2.1 概率推理中的变量消元方法 2.2 团树传播算法 2.3 近似推理 2 ...

  3. 机器学习--贝叶斯网

    ++Bayesian network 1-概念 2-DAG示例 3-BN结构 4-BN中3个变量之间的依赖关系 5-吉布斯采样算法 6-代码部分 0-自定义贝叶斯网络 1-搜索所有网络结构 2-启发式 ...

  4. 从朴素贝叶斯到贝叶斯网

    回顾 在文章<朴素贝叶斯>中,小夕为大家介绍了朴素贝叶斯模型的基本知识,并且得出了朴素贝叶斯是利用联合概率P(x1,x2,x3...xn,y)来确定某个样本为某个类别的概率,进而利用最大后 ...

  5. 贝叶斯网的R实现( Bayesian networks in R)bnlearn(3)

    4.参数学习 得到贝叶斯网的网络结构之后,可以对局部分布的参数进行参数估计了,这称作参数学习. 4.1参数学习的基本方法 bnlearn包的参数学习函数是bn.fit,其参数method给出了两种具体 ...

  6. 贝叶斯网的R实现( Bayesian networks in R)bnlearn(2)

    3.结构学习 上面我们采用一个预先设定的结构建立了一个关于marks的贝叶斯网.这种方式在某些情况下(比如存在先验的专家知识)是合适的.但是对大多数的贝叶斯网络,我们需要从数据中学习网络. 3.1贝叶 ...

  7. 贝叶斯网的R实现( Bayesian networks in R)bnlearn(1)

    1.bayesian networks的一些基本概念 贝叶斯网bayesian networks是一种有向无环图模型(DAG),可表示为G=(V,A).其中V是节点的集合,节点表示随机变量:A是弧(或 ...

  8. 贝叶斯网专题4:概率推理中的变量消元方法

    文章目录 第一部分:贝叶斯网基础 [1.1 信息论基础](https://blog.csdn.net/deepbodhi/article/details/119823055) [1.2 贝叶斯网基本概 ...

  9. 贝叶斯网专题11:参数学习之极大似然估计

    第一部分:贝叶斯网基础 1.1 信息论基础 1.2 贝叶斯网基本概念 1.3 变量独立性的图论分析 第二部分:贝叶斯网推理 2.1 概率推理中的变量消元方法 2.2 团树传播算法 2.3 近似推理 2 ...

  10. 贝叶斯网专题1:信息论基础

    文章目录 贝叶斯网专题前言 第一部分:贝叶斯网基础 1.1 信息论基础 1.1.1 预备数学知识:Jensen不等式 1.1.2 熵 1.1.3 联合熵.条件熵.互信息 1.1.4 交叉熵和相对熵(K ...

最新文章

  1. java监听器定时删除,java监听器定时删除服务器上的文件
  2. 北卡教堂山计算机科学专业,UNC的CS「北卡罗来纳大学教堂山分校计算机科学系」...
  3. MySQL各种类型实验
  4. Java多线程,锁(synchronize),饿汉式单例线程,等待处理机制
  5. linux 打开上一级目录,linux开机启动过程、PATH、过滤一级目录、cd的参数、ls -lrt、命令切割日志...
  6. 数据结构上机实验之二分查找
  7. iOS5 UIKit新特性
  8. WebService之Axis2快速入门(2): 传递复合类型的数据
  9. python 直方图均衡化_直方图均衡化-Python实现
  10. Lync学习资料分享
  11. 无法打开csproj,因为此版本的应用程序不支持其项目类型 csproj
  12. 远程控制桌面,外网电脑PC手机ios安卓mac远程桌面连接内网linux和windows主机,史上最全最详细图文教程
  13. 腾讯云学生服务器如何购买
  14. mysql分区表去重复_MySQL分区表管理
  15. SAP 业务交易事件BTE(Business Transaction Event)
  16. 从0到1编写个人博客项目使用springboot+vue(前后端分离) 到 购买服务器上传项目 到 GitHub开源项目、此过程下所遇问题及解决方法,至少你帮你少走70%弯路
  17. 使用python计算复利
  18. typeScript学习笔记day01——小肉包
  19. 基于SVM支持向量机实现人脸识别
  20. wince蓝屏_Windows7更新补丁蓝屏错误代码6B的暂时解决方法

热门文章

  1. wend计算机语言,计算机脚本语言开机显示当前页面发生
  2. DEM高程数据下载方法
  3. python学习手册第五版_自学笔记系列:《Python学习手册 第五版》 -写在开始之前...
  4. MTP管理才能发展专家
  5. SQL Server安装下载教程
  6. Win10 重装系统备忘
  7. excel 2016 英文界面 更换 中文界面
  8. JLU数据结构第七次上机实验解题报告
  9. 广东21个地级市行政区划(2022)
  10. 身份证阅读器读卡器React网页方法实现身份证的读取