Eu uso o pacote bnlearn em R para aprender a estrutura da minha rede bayesiana e seus parâmetros. O que eu quero fazer é "prever" o valor de um nó, dado o valor de outros nós como evidência (obviamente, com exceção do nó cujos valores estamos prevendo).
Eu tenho variáveis contínuas.
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
Agora, esse código funciona bem e fornece uma tabela na qual é possível ver que os valores previstos para o nó C são exatamente iguais ao valor original do nó C no conjunto de testes.
Eu não entendo o motivo disso, alguém poderia explicar isso?
Eu sei, estou fornecendo df inteiro do conjunto de teste que já possui o valor do nó C. Mas se eu der os dados de outras colunas, isso dá um erro. Então, tentei uma alternativa de colocar outros valores em 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
Essa abordagem está errada? (O uso de "NA" não é permitido.)