【发布时间】:2015-05-05 17:54:49
【问题描述】:
我正在使用 r 包“bnlearn”来处理我构建的贝叶斯网络:
bn.gs <- gs(x = dat, cluster = NULL, whitelist = wl, blacklist = bl, test = NULL, alpha = 0.05, B = NULL, debug = FALSE, optimized = TRUE, strict = FALSE, undirected = FALSE)
它给了我一个很好的情节,一切似乎都很好。所有变量都是连续的,介于 -1 和 1 之间。喂养变量(没有父母的变量)生成如下(N = 1000):
A <- runif(N, min=-1, max=1)
假设我的变量是 A、B、... Z,并且我知道 C、G 和 M 的值。现在我想预测其余节点的值(A、B、D , ...) 给定 C、G 和 M。就我而言,predict() 一次只适用于一个节点。
有没有一种方法可以同时预测多个节点,或者我是否应该通过一次对每个节点应用 predict() 来获得正确的值?给定“C”的值,我已经尝试预测节点“A”的值:
predict(bn.gs, node = "A", testdata, debug = TRUE)
其中 testdata 是这种形式的数据框:
A B C D E ...
0.0 0.0 0.7 0.0 0.0 ...
但我明白了:
* predicting values for node A.
> prediction for observation 1 is nan with predictor:
(0.000000) + (0.000000) * (nan) + (0.000000) * (nan)
[1] NA
我很肯定我在这里做错了什么。在我的网络中有弧 C -> S -> A。“nan”也很奇怪,因为我的网络应该定义明确。
已经谢谢你了:)。
【问题讨论】:
-
据我所知,在 bnlearn 中无法一次预测多个节点。您的选择是在 bnlearn 中使用循环或应用功能,或者下载 Genie(不同的软件)。 Genie 可以一次调整所有节点的概率。
标签: r predict bayesian-networks