Saya menggunakan paket bnlearn di R untuk mempelajari struktur Jaringan Bayesian saya dan parameternya. Apa yang ingin saya lakukan adalah untuk "memprediksi" nilai dari sebuah simpul yang diberi nilai dari simpul lain sebagai bukti (jelas, dengan pengecualian dari simpul yang nilainya kita prediksi).
Saya memiliki variabel kontinu.
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
Sekarang, kode ini berfungsi dengan baik dan memberikan tabel di mana Anda dapat melihat bahwa nilai yang diprediksi untuk simpul C persis sama dengan nilai asli simpul C dalam set uji.
Saya tidak mengerti alasannya, dapatkah seseorang menjelaskannya?
Saya tahu, saya menyediakan seluruh df set tes yang sudah memiliki nilai simpul C di dalamnya. Tetapi jika saya memberikan data kolom lain, itu memberikan kesalahan. Jadi, saya mencoba alternatif untuk meletakkan nilai lain ke 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
Apakah pendekatan ini salah? (Menggunakan "NA" tidak diperbolehkan.)