您现在的位置是:主页 > news > 那里可以做工作室做网站/小吃培训2000元学6项
那里可以做工作室做网站/小吃培训2000元学6项
admin2025/5/24 14:06:17【news】
简介那里可以做工作室做网站,小吃培训2000元学6项,景安wordpress主机,优秀seo外包平台dbnR是R语言中动态贝叶斯网(DBN)的工具箱,与2020年3月底发行,是很新的工具箱了。这个工具箱和bnlearn是一脉相承的,其中很多函数需要用到bnlearn里面的函数。因此在安装dbnR之前需要安装bnlearn工具箱关于dbnR的详细信息可见:dkes…
dbnR是R语言中动态贝叶斯网(DBN)的工具箱,与2020年3月底发行,是很新的工具箱了。这个工具箱和bnlearn是一脉相承的,其中很多函数需要用到bnlearn里面的函数。因此在安装dbnR之前需要安装bnlearn工具箱
关于dbnR的详细信息可见:
dkesada/dbnRgithub.com
以下是具体函数的解释
- 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的值的
画出预测结果

看起来还不错 :)