I use bnlearn package in R to learn the structure of my Bayesian Network and its parameters. What I want to do is to "predict" the value of a node given the value of other nodes as evidence (obviously, with the exception of the node whose values we are predicting).
I have continuous variables.
library(bnlearn) # Load the package in R data(gaussian.test) training.set = gaussian.test[1:4000, ] # This is training set to learn the parameters test.set = gaussian.test[4001:4010, ] # This is test set to give as evidence res = hc(training.set) # learn BN structure on training set data fitted = bn.fit(res, training.set) # learning of parameters pred = predict(fitted$C, test.set) # predicts the value of node C given test set table(pred, test.set[, "C"]) # compares the predicted value as original
Now, this code works well and gives a table in which you can see that predicted values for node C are exactly same as the original value of node C in test set.
I do not understand the reason for that, could someone please explain it?
I know, I am providing entire df of test set that already has the value of node C in it. But if I give the data of other columns, it gives an error. So, I tried an alternative of putting other values to 0.
test.set$C = 0 # To not give the original value of node C as evidence pred = predict(fitted$C, test.set) # predicts the value of node C given test set table(pred, test.set[, "C"]) # compares the predicted value as original
Is this approach wrong? (Using "NA" is not allowed.)