如何使用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
但问题是,这仅适用于分类数据(因子)。当我在具有连续变量(如整数,数字等)的数据集上使用它时,它会给我以下错误
通过查看包的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