首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R包bnlearn: cpquery vs预测-不同的结果?

R包bnlearn: cpquery vs预测-不同的结果?
EN

Stack Overflow用户
提问于 2018-05-09 18:41:19
回答 1查看 658关注 0票数 0

我想使用我的贝叶斯网络作为分类器,首先是完整证据数据(predict),但也是不完整数据(bnlearn::cpquery)。但似乎,即使使用相同的证据,函数也会给出不同的结果(不仅仅是基于采样造成的轻微偏差)。

有了完整的数据,就可以很容易地使用R的predict函数:

代码语言:javascript
复制
predict(object = BN,
        node = "TargetVar",
        data = FullEvidence ,
        method = "bayes-lw",
        prob = TRUE)

通过分析prob属性,我了解到predict-function只选择具有最高概率的因子级别。

当涉及到不完整的证据(只知道某些节点的结果)时,predict不再工作:

代码语言:javascript
复制
    Error in check.fit.vs.data(fitted = fitted, 
                               data = data, 
                               subset = setdiff(names(fitted),  : 
    required variables [.....] are not present in the data.` 

因此,我想使用带有已知证据列表的bnlearn::cpquery

代码语言:javascript
复制
cpquery(fitted = BN, 
        event = TargetVar == "TRUE", 
        evidence = evidenceList, 
        method = "lw",
        n = 100000)

同样,我只想使用概率最高的因子作为预测。因此,如果cpquery的结果高于0.5,我将预测设置为TRUE,否则设置为FALSE。

我试图通过给两个函数提供相同的(完整的)数据来监控这个过程,但它们没有给我返回相同的结果。

做这件事的“正确”方法是什么?只使用cpquery,也可以处理完整的数据?为什么会有很大的差异?

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

发布于 2018-05-15 18:11:59

正如user20650所说,增加预测呼叫中的样本数量是获得非常相似结果的解决方案。所以只需在函数调用中提供参数n = ...即可。

当然这是有道理的,我只是不知道predict()函数中的这个参数。在bn.fit utilities中没有关于它的文档,在predict的非常通用的文档中也没有。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50251413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档