用于连续变量的贝叶斯网络学习和推理

时间:2015-12-18 08:00:06

标签: r statistics bayesian bayesian-networks

如何使用R?

进行贝叶斯结构学习和连续变量的推理

我正在使用'bnlearn'包,如下所示:

对于使用Hill Climbing算法的结构学习,我执行以下操作

mynetwork = hc(dataset,score='bic',restart = 0)
mynetwork.fitted = bn.fit(mynetwork , dataset, method='bayes')
mynetwork.grain <<- as.grain(mynetwork.fitted)

推断,我正在做以下

predict(mynetwork.grain, response = c("myresponsevariable"), newdata = mytestdata, predictors = mypredictors, type = "distribution")$pred$myresponsevariable

这为响应变量

的每个可能状态提供了如下输出
             0         1
[1,] 0.8745255 0.1254745

但问题是,这仅适用于分类数据(因子)。当我在具有连续变量(如整数,数字等)的数据集上使用它时,它会给我以下错误enter image description here

通过查看包的source(第666行和第418-419行),我可以理解包期望它的所有输入列都是类型因子。

是否有替代方法(包)用于计算R中的贝叶斯网络,通过该方法,我可以对某些列进行网络学习和连续(数字)数据的推断?

编辑:谢谢,我按照user2957945的建议尝试了以下内容,它确实有效。但是,有没有办法获得预测的状态0和1的概率数。例如,比方说,我试图预测df [3,],它给我的预测为0.但是,我还希望看到它为0的概率和它的概率为1,设定阈值以上。请参阅我的原始帖子,我发布了一些样本概率。

#making the data set
col1 = c(1,2,3,4,5)
col2 = c(10,20,30,40,50)
col3 = c(0,1,1,0,0)
df = data.frame(col1,col2,col3)
df$col3 = as.factor(df$col3)

#learning the network
hcbn = hc(df)
hcbn.fit = bn.fit(hcbn,df)

#doing prediction
> predict(hcbn.fit,"col3",method = "bayes-lw",data = df[3,])
[1] 0
Levels: 0 1

0 个答案:

没有答案