我有一个图结构,由另一种方法确定,我想做参数学习。然而,bnlearn 方法似乎直接在数据集上进行参数学习(严格在数据框中)。我有两个问题:如何使用 bnlearn 从 igraph 或 graphNEL 结构中进行参数学习?
第二个问题:当我尝试使用我的数据集进行参数学习时出现 check.data() 错误。他们的示例代码有效,我不明白为什么我的数据集没有。请参阅下面的代码和下面的可重现示例。
这是他们的示例代码:
require(bnlearn)
require(Rgraphviz)
data(learning.test)
bn <- naive.bayes(learning.test, "A")
pred <- predict(bn, learning.test)
table(pred, learning.test[,"A"])
我的可重现示例(naive.bayes() 调用错误):
require(bnlearn, Rgraphviz)
data <- data <- matrix(sample.int(200, 61*252, TRUE), nrow=252, ncol=61)
data <- as.data.frame(matrix(as.numeric(as.matrix(data)), ncol=ncol(data),
byrow=TRUE))
bn <- naive.bayes(data, names(data)[1])
错误信息:
Error in check.data(data, allowed.types = discrete.data.types) :
valid data types are:
* all variables must be unordered factors.
* all variables must be ordered factors.
* variables can be either ordered or unordered factors.
我不认为这个错误来自于检测整数,因为当我将数据转换为数据帧时,我首先将其转换为数字,因为 bnlearn 中的其他方法需要数字或因子数据。这个数据集是计数数据,但我想使用假设我使用连续数据集的方法。这有意义吗?