Tôi sử dụng gói bnlearn trong R để tìm hiểu cấu trúc của Mạng Bayes và các tham số của nó. Điều tôi muốn làm là "dự đoán" giá trị của một nút được đưa ra giá trị của các nút khác làm bằng chứng (rõ ràng, ngoại trừ nút có giá trị mà chúng ta dự đoán).
Tôi có các biến liên tục.
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
Bây giờ, mã này hoạt động tốt và đưa ra một bảng trong đó bạn có thể thấy rằng các giá trị dự đoán cho nút C hoàn toàn giống với giá trị ban đầu của nút C trong tập kiểm tra.
Tôi không hiểu lý do cho điều đó, ai đó có thể vui lòng giải thích nó?
Tôi biết, tôi đang cung cấp toàn bộ df của tập kiểm tra đã có giá trị của nút C trong đó. Nhưng nếu tôi cung cấp dữ liệu của các cột khác, nó sẽ báo lỗi. Vì vậy, tôi đã thử một cách khác để đưa các giá trị khác về 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
Cách tiếp cận này có sai không? (Không được phép sử dụng "NA".)