Utilizo el paquete bnlearn en R para aprender la estructura de mi red bayesiana y sus parámetros. Lo que quiero hacer es "predecir" el valor de un nodo dado el valor de otros nodos como evidencia (obviamente, con la excepción del nodo cuyos valores estamos prediciendo).
Tengo variables continuas
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
Ahora, este código funciona bien y proporciona una tabla en la que puede ver que los valores pronosticados para el nodo C son exactamente iguales al valor original del nodo C en el conjunto de prueba.
No entiendo la razón de eso, ¿alguien podría explicarlo?
Lo sé, estoy proporcionando df completo del conjunto de pruebas que ya tiene el valor del nodo C en él. Pero si doy los datos de otras columnas, da un error. Entonces, probé una alternativa de poner otros valores a 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
¿Es este enfoque incorrecto? (El uso de "NA" no está permitido).