library(bnlearn)
survey
str(survey)
#把整型变量转换为数值型变量
survey2=as.data.frame(matrix(as.numeric(as.matrix(survey)),nrow=33,ncol=10))
colnames(survey2)=c("SY", "SJ", "KF", "LT", "DD", "T", "W", "A",
"J", "N")
str(survey2)
#生成贝叶斯网络
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
dg
#绘制网络
library(Rgraphviz)
graphviz.plot(dg, layout = "fdp")
plot(dg, radius = 250, arrow = 30)
#结构学习
survey2.bn
survey2.bn
#结构学习调试过程
survey2.bn
#结构学习得到网络的无向图
graphviz.plot(survey2.bn, layout = "fdp")
#对网络进行评分和修正
survey2.bn
survey2.bn
graphviz.plot(survey2.bn, layout = "fdp")#调试后得到有向网络
#得分
score(survey2.bn, data = survey2, type = "bic-g") ####出错
#参数学习
survey2.bn
survey2.bn2
survey2.fit
survey2.fit
#Error in bn.fit(survey2.bn, data = survey2) : the graph is only partially directed.
survey2.fitA
#离散化
survey2.d
survey2.dgs
plot(survey2.dgs, radius = 200, arrow = 30)##无向图
survey2.dhc
plot(survey2.dhc, radius = 160, arrow = 40)##gs算法与hc算法结果出现差异
all.equal(cpdag(survey2.dgs), cpdag(survey2.dhc))
#参数学习结果
survey2.fit2
survey2.fit2A
这是代码