楼主: liufayue
2061 4

[问答] 利用bnlearn函数进行贝叶斯推断时利用cpquery封装函数出错 [推广有奖]

  • 0关注
  • 1粉丝

博士生

31%

还不是VIP/贵宾

-

威望
0
论坛币
1309 个
通用积分
0.0600
学术水平
9 点
热心指数
10 点
信用等级
6 点
经验
4041 点
帖子
162
精华
0
在线时间
371 小时
注册时间
2005-5-28
最后登录
2019-4-23

20论坛币
在贝叶斯网络中,利用bnlearn进行推断时出错。
r代码(完整代码,在安装bnlearn包后可直接复制到r中运行):####################################
library(bnlearn)
data(learning.test)
fitted = bn.fit(hc(learning.test), learning.test)

bn.function <- function(network, evidence_data) {
  a <- NULL
  b <- nrow(evidence_data)
  for (i in 1:b) {
    evi <- paste("(", names(evidence_data), "=='",
               sapply(evidence_data[i,], as.character), "')",
               sep = "", collapse = " & ")
    a <- cpquery(network, (C=='c'), eval(parse(text=evi))) # 应该是这条指令有误
  }
  return(a)
}

test <- bn.function(fitted, learning.test)
[size=12.8000001907349px]########################################

报错信息为
Error in parse(text = evi) : object 'evi' not found

但是如果把cpquery函数单独拿出来执行,则没有问题
[size=12.8000001907349px]这是网上的相关解释,但是还是不能解决问题
[size=12.8000001907349px] http://r.789695.n4.nabble.com/Us ... loop-td4677927.html



关键词:bnlearn Learn 贝叶斯推断 Query Earn function network library names 网络
沙发
gssdzc 在职认证  发表于 2014-10-1 09:06:44 |只看作者 |坛友微信交流群
给顶起来。。。。。。

使用道具

藤椅
chinaqianchao 发表于 2015-1-10 09:21:20 |只看作者 |坛友微信交流群
楼主好,请问你的问题解决了吗?我也遇到和你一样的问题

使用道具

板凳
liufayue 发表于 2015-1-10 12:27:01 |只看作者 |坛友微信交流群
利用paste将cpquery整体封装

使用道具

报纸
chinaqianchao 发表于 2015-1-13 14:30:27 |只看作者 |坛友微信交流群
liufayue 发表于 2015-1-10 12:27
利用paste将cpquery整体封装
谢谢楼主,问题解决

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-22 01:23