R bnlearn-使用naive.bayes()check.data()错误进行参数学习

R bnlearn-使用naive.bayes()check.data()错误进行参数学习,r,machine-learning,graph-theory,naivebayes,R,Machine Learning,Graph Theory,Naivebayes,我有一个图形结构,由另一种方法确定,我想做参数学习。然而,bnlearn方法似乎直接在数据集上进行参数学习(严格地说是在数据帧中)。我有两个问题:如何使用bnlearn从igraph或graphNEL结构学习参数 第二个问题:当我尝试使用我的数据集进行参数学习时,我得到一个check.data()错误。他们的示例代码可以工作,我不明白为什么我的数据集不能工作。请参阅下面的代码和下面的可复制示例 下面是他们的示例代码: require(bnlearn) require(Rgraphviz) dat

我有一个图形结构,由另一种方法确定,我想做参数学习。然而,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"])

我不认为这个错误来自于检测整数,因为当我将数据转换为数据帧时,我首先将其转换为数值,因为bnlearn中的其他方法需要数值或分解数据。这个数据集是计数数据,但我想使用这个方法,假设我使用的是连续数据集。这有意义吗?

Q1:
?as.graphAM
查看图形集成函数,包括
as.bn
。然后,可以将参数适配到此结构。问题2:来自
?naive.bayes
:由于bnlearn不支持同时包含连续变量和离散变量的网络,因此数据中的所有变量都必须是离散的。注释有点过时了,因为您可以为BN使用混合变量,但对于朴素贝叶斯,变量应该是因子感谢您的响应!我将其命名为.bn()-ed,现在它抱怨图是部分有向的。这是一个马尔可夫随机场图,所以它是无向的。我们不能在无向图上进行参数学习吗?关于Q2,在R中,“因素”是否与离散数据同义?我不确定如何向R传达我的数据是因子、离散或连续等信息。对于记录,tree.bayes()也会抛出相同的错误。我不确定我还有什么其他选择。通过设计,贝叶斯网络和朴素贝叶斯模型是定向的(有些可能是部分定向的,但要使无向边参数化,需要强制使其定向)。我不熟悉MRF或者它们应该如何参数化——这足以迫使图形的某些边被定向吗?问题2。bnlearn naive模型需要是因子(这里是离散的同义词)——一个选项是离散化数据。您听说过如何将目标类标签(结果变量)节点添加到图形模型中吗?也许我可以这样增加方向性?如果图形结构只是对变量(特征)关系进行注释,而不是对它们与结果变量的关系进行注释,我看不出马尔可夫RFs的意义。也许这是一个功能选择的事情?或者我可以计算特征X和特征Y都增加了边缘权重的概率吗?问题2。如何在R中离散化自己的数据?我知道factor()包装器方法,但我不喜欢它对dataframe.Q1的作用。对不起,我不知道-我想这些问题中的一些可能会得到更好的回答。问题2:离散化有多种方式;您可以使用
cut
功能并选择您认为合理的中断(
x
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.