Ich verwende das bnlearn-Paket in R, um die Struktur meines Bayes'schen Netzwerks und seine Parameter zu lernen. Was ich tun möchte, ist, den Wert eines Knotens anhand des Werts anderer Knoten als Beweis "vorherzusagen" (offensichtlich mit Ausnahme des Knotens, dessen Werte wir vorhersagen).
Ich habe kontinuierliche Variablen.
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
Dieser Code funktioniert nun gut und enthält eine Tabelle, in der Sie sehen können, dass die vorhergesagten Werte für Knoten C genau mit dem ursprünglichen Wert von Knoten C im Testsatz übereinstimmen.
Ich verstehe den Grund dafür nicht, könnte jemand es bitte erklären?
Ich weiß, ich stelle die gesamte df des Testsatzes bereit, der bereits den Wert von Knoten C enthält. Aber wenn ich die Daten anderer Spalten gebe, gibt es einen Fehler. Also habe ich eine Alternative versucht, andere Werte auf 0 zu setzen.
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
Ist dieser Ansatz falsch? (Die Verwendung von "NA" ist nicht zulässig.)