Rでbnlearnパッケージを使用して、ベイジアンネットワークの構造とそのパラメーターを学習します。私がやりたいことは、証拠として他のノードの値を与えられたノードの値を「予測」することです(当然、予測している値のノードを除いて)。
連続変数があります。
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
これで、このコードはうまく機能し、ノードCの予測値がテストセットのノードCの元の値とまったく同じであることを確認できる表が表示されます。
その理由がわかりません。誰か教えていただけませんか?
私は、ノードCの値が既に含まれているテストセットのdf全体を提供しています。しかし、他の列のデータを指定すると、エラーが発生します。それで、私は他の値を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
このアプローチは間違っていますか?(「NA」は使用できません。)