Я использую 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() работает для одного узла за раз.
Есть ли метод для одновременного прогнозирования нескольких узлов, или я должен в конечном итоге получить правильные значения, применяя прогнозирование () к каждому узлу за раз? Я уже пытался предсказать значение для узла "A", учитывая значение "C":
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. Также «нан» странные, так как моя сеть должна быть четко определена.
Спасибо уже :).