【发布时间】:2020-02-27 10:01:54
【问题描述】:
我的训练数据如下所示:
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 必须 至少有两个级别。
我该如何解决这个问题?我的观点是,测试数据不需要包含在训练数据中的所有级别——事实上,即使测试数据只有一个实例,也不应该可以预测吗?
【问题讨论】: