楼主: liufayue
2313 4

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

  • 0关注
  • 1粉丝

已卖:45份资源

博士生

31%

还不是VIP/贵宾

-

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

楼主
liufayue 发表于 2014-9-14 20:40:10 |AI写论文
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
拉您进交流群
GMT+8, 2025-12-27 04:00