问题标签 [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.

0 投票
1 回答
252 浏览

r - R bnlearn eval 内部函数

我正在使用 R 中的 bnlearn 包来训练贝叶斯网络。我对以下代码有问题(稍微修改了 bnlearn 示例代码):

此代码引发错误:

总结期间出错:无法将类型“闭包”强制转换为“字符”类型的向量

但是,如果 str 和 str2 在函数 myfuncBN() 之外定义,则它可以工作。有谁知道这是什么原因?

0 投票
0 回答
128 浏览

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 的新手,请帮助我度过难关。

谢谢你。

0 投票
0 回答
414 浏览

bayesian-networks - Score bic 只能用于离散数据

我有一个数据框,所有列都采用离散格式。我应用以下代码使用 bnlearn 包生成 BN。但是我得到这个错误,说“分数'bic'可能只用于离散数据”,而我的数据基本上是离散的!这是我的数据示例:

这就是我运行的:

我不明白为什么我的数据不被视为离散的?

0 投票
1 回答
421 浏览

r - R blearn - 子图函数错误:节点必须是字符串向量

我在这里想念什么?我已经清理了工作区并重新启动了会话。这是我似乎引起麻烦的代码部分。我正在尝试从强度对象平均贝叶斯网络弧强度,然后保存该平均图的所有节点,然后计算相关节点,保存为字符串向量:

然后我得到这个错误:

这是我的相关节点:

当我检查引发此错误消息的地方的源代码时,我找到了 if 语句 ( Link )

并运行它:

结果是

有人有想法吗?我对 R 比较陌生,但仍然发现自己正在学习=<-昨天的区别,所以请不要对我太苛刻。

0 投票
1 回答
761 浏览

r - R bnlearn 包错误重新分配条件概率

我正在使用 R 中的 bnlearn 包来构建一个使用数据和专家知识的定制拟合离散贝叶斯网络。http://www.bnlearn.com/examples/custom/

这需要使用 bn.fit() 创建一个 bn.fit 对象并修改感兴趣节点的局部分布。对于离散贝叶斯网络(或条件高斯网络中的离散节点),可以使用 coef() 从 bn.fit 对象中提取条件概率表,对其进行更新和重新保存。

我想通过索引bn.fit对象来更新大量节点,即

鉴于 [[ 和 $ 运算符之间的等价性,任何人都可以解释为什么会这样以及可能的解决方法。

谢谢

0 投票
2 回答
3663 浏览

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。

0 投票
1 回答
603 浏览

bayesian - Structure.em 中的 bnlearn 错误

尝试在“bnlearn”包中使用结构性.em 时出现错误这是代码:

check.data(x, allow.levels = TRUE, allow.missing = TRUE, warn.if.no.missing = TRUE, : 至少一个变量没有观察值。

有没有人遇到同样的问题,请告诉我如何解决它。谢谢你。

0 投票
1 回答
1317 浏览

r - bnlearn + Rgraphviz:自定义绘图时使用双箭头而不是无向边

我正在尝试自定义bnlearn使用RGraphviz. 当我有无向边时,RGraphviz当我尝试自定义图形的外观时,将它们变成两个方向的有向边。

一个可重现的例子可能是:

图表未自定义:

在此处输入图像描述

到目前为止,一切都很好。但如果我尝试自定义它:

自定义图表

在此处输入图像描述

无向边被变换。

即使我只使用 plot(g1),我也会遇到这个问题。问题是这(保存 g1 然后使用绘图)似乎改变了图形的外观。

0 投票
1 回答
311 浏览

r - bnlearn 设置和放置弧线

查看http://www.bnlearn.com/documentation/man/arcops.html,删除弧的方法是使用该drop.arcs函数。

它似乎并没有放弃它

但在调试日志中,它似乎有效。

这是一个问题R3.4.3吗?如何在检查循环时使用弧操作?我总是可以更换res$arcs桌子,但我希望能够检查周期。

0 投票
1 回答
129 浏览

bnlearn - 贝叶斯网络结构学习

使用 bnlearn 包,我可以通过将我的数据集作为参数传递来学习 BN 的结构,例如:

bn1 <- blnearn :: hc(数据集)

或者我必须通过一些边缘作为先验知识,例如:

wl = data.frame (from = c ("A", "B"), to = c ("B", "C")) bn1 <- blnearn :: hc (datase, whitelist = wl)

我的意思是 bnlearn 算法只能从数据中学习结构,或者总是需要一些先验知识的帮助。