Мои тренировочные данные выглядят так:
A B C D
1 1 1 1
1 1 1 2
1 1 2 1
1 1 2 1
1 1 2 2
1 1 2 2
1 2 1 1
1 2 1 1
1 2 1 2
1 2 1 2
1 2 2 1
1 2 2 2
2 1 1 1
2 1 1 1
2 1 1 2
2 1 1 2
2 1 2 1
2 1 2 1
2 1 2 2
2 1 2 2
2 2 1 1
2 2 1 2
2 2 2 1
2 2 2 2
2 2 2 2
И мои тестовые данные:
A B C D
1 1 2 1
1 1 2 2
1 1 1 1
2 1 2 2
Я сделал примерку, используя:
dag <- model2network("[A][B][C|A:B][D|A:B:C]")
training <- bn.fit(dag, trainingData, method = "mle", keep.fitted = TRUE)
И я пытаюсь предсказать значения для столбца D, используя:
predicted = predict(training, node = "D", data = testData, method = "parents", prob = FALSE)
Но я получаю ошибку
Ошибка в check.data (data, allow.levels = TRUE): переменная B должна иметь как минимум два уровня.
Как это исправить? Я считал, что тестовые данные не обязательно должны иметь все уровни, включенные в обучающие данные - на самом деле, разве нельзя иметь возможность прогнозировать, даже если тестовые данные имеют только один экземпляр?