问题标签 [bnlearn]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - R bnlearn eval 内部函数
我正在使用 R 中的 bnlearn 包来训练贝叶斯网络。我对以下代码有问题(稍微修改了 bnlearn 示例代码):
此代码引发错误:
总结期间出错:无法将类型“闭包”强制转换为“字符”类型的向量
但是,如果 str 和 str2 在函数 myfuncBN() 之外定义,则它可以工作。有谁知道这是什么原因?
r - bnlearn 参数错误:iamb(bn) 或 gs(bn)
我试图用函数 iamb(x) 和 gs(x) 创建贝叶斯网络。但它显示“check.data(x) 中的错误:变量 MFYield 必须至少有两个级别。”
这是我的代码,
bn[sapply(bn, is.character)] <- lapply(bn[sapply(bn, is.character)], as.factor)
这是我的数据“bn”的样本:
str(bn)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 59 obs. of 42 variables:
$ MFYield : Factor w/ 2 levels "0","1": 1 1 1 1 2 1 1 1 1 1 ...
$ MWtA : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
$ MWtT : Factor w/ 2 levels "0","1": 2 2 2 2 1 2 2 2 2 2 ...
$ MClb : Factor w/ 2 levels "0","1": 2 2 2 2 2 1 1 1 1 1 ...
$ MPS : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
$ MTwU : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
$ MTwD : Factor w/ 2 levels "0","1": 1 1 1 1 1 2 2 2 2 2 ...
$ MTwDAgent: Factor w/ 2 levels "0","1": 1 1 1 1 1 2 2 2 2 2 ...
当我尝试创建网络时,错误从这里开始。check.data(x) 中的错误:变量 MFYield 必须至少有两个级别。
我不确定是因为我的数据是 tibble 吗?小标题:59 x 42 当我检查时,它说:
[1] 0
[1] “tbl_df” “tbl” “data.frame”
[1] 对
所以,我认为我的数据已经是一个因素,但 R 无法检测到它已经有两个级别。我不明白,为什么?
我该如何解决?我是 R 的新手,请帮助我度过难关。
谢谢你。
bayesian-networks - Score bic 只能用于离散数据
我有一个数据框,所有列都采用离散格式。我应用以下代码使用 bnlearn 包生成 BN。但是我得到这个错误,说“分数'bic'可能只用于离散数据”,而我的数据基本上是离散的!这是我的数据示例:
这就是我运行的:
我不明白为什么我的数据不被视为离散的?
r - R blearn - 子图函数错误:节点必须是字符串向量
我在这里想念什么?我已经清理了工作区并重新启动了会话。这是我似乎引起麻烦的代码部分。我正在尝试从强度对象平均贝叶斯网络弧强度,然后保存该平均图的所有节点,然后计算相关节点,保存为字符串向量:
然后我得到这个错误:
这是我的相关节点:
当我检查引发此错误消息的地方的源代码时,我找到了 if 语句 ( Link )
并运行它:
结果是
有人有想法吗?我对 R 比较陌生,但仍然发现自己正在学习=
和<-
昨天的区别,所以请不要对我太苛刻。
r - R bnlearn 包错误重新分配条件概率
我正在使用 R 中的 bnlearn 包来构建一个使用数据和专家知识的定制拟合离散贝叶斯网络。http://www.bnlearn.com/examples/custom/
这需要使用 bn.fit() 创建一个 bn.fit 对象并修改感兴趣节点的局部分布。对于离散贝叶斯网络(或条件高斯网络中的离散节点),可以使用 coef() 从 bn.fit 对象中提取条件概率表,对其进行更新和重新保存。
我想通过索引bn.fit对象来更新大量节点,即
鉴于 [[ 和 $ 运算符之间的等价性,任何人都可以解释为什么会这样以及可能的解决方法。
谢谢
r - R 中 bn.fit() 的数据类型错误:bnlearn 中不支持变量(类型:整数)
基于给定的网络结构,我为六个二进制变量(x1 到 x6)创建了一个包含 100 个实例的数据框。因此,它是一个 100 x 6 的 0/1 值数据帧,存储在变量“input_params”中。使用语句创建了一个空图:
library(bnlearn)
bn_graph = empty.graph(names(input_params))
但是当我尝试在网络中使用上述参数('input_params')
bn_nw <- bn.fit(bn_graph, input_params)
我收到一条错误消息
Error in data.type(x) :
variable x1 is not supported in bnlearn (type: integer).
我应该做什么样的数据类型转换来避免这个错误?现在它的值是 0 或 1。
bayesian - Structure.em 中的 bnlearn 错误
尝试在“bnlearn”包中使用结构性.em 时出现错误这是代码:
check.data(x, allow.levels = TRUE, allow.missing = TRUE, warn.if.no.missing = TRUE, : 至少一个变量没有观察值。
有没有人遇到同样的问题,请告诉我如何解决它。谢谢你。
r - bnlearn 设置和放置弧线
查看http://www.bnlearn.com/documentation/man/arcops.html,删除弧的方法是使用该drop.arcs
函数。
它似乎并没有放弃它
但在调试日志中,它似乎有效。
这是一个问题R3.4.3
吗?如何在检查循环时使用弧操作?我总是可以更换res$arcs
桌子,但我希望能够检查周期。
bnlearn - 贝叶斯网络结构学习
使用 bnlearn 包,我可以通过将我的数据集作为参数传递来学习 BN 的结构,例如:
bn1 <- blnearn :: hc(数据集)
或者我必须通过一些边缘作为先验知识,例如:
wl = data.frame (from = c ("A", "B"), to = c ("B", "C")) bn1 <- blnearn :: hc (datase, whitelist = wl)
我的意思是 bnlearn 算法只能从数据中学习结构,或者总是需要一些先验知识的帮助。