pgmpy包使用问题‘SubDiGraph‘ object has no attribute ‘get_ancestral_graph‘解决

在使用pgmpy包进行贝叶斯网络推理时遇到'SubDiGraph'对象无'get_ancestral_graph'属性的错误。该问题在Python 3.6版本中出现,而在3.7版本中正常。解决方案是创建一个Python 3.7的虚拟环境并重新安装pgmpy,问题得到解决。此错误可能是由于pgmpy库与较低Python版本的不兼容导致。

pgmpy包使用问题解决

‘SubDiGraph‘ object has no attribute ‘get_ancestral_graph‘

出现问题

在使用

from pgmpy.inference import VariableElimination
infer = VariableElimination(model)
print(infer.query(["L"]))

报错

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-2-4bd7a0361ea5> in <module>()
      1 from pgmpy.inference import VariableElimination
      2 infer = VariableElimination(model)
----> 3 print(infer.query(["L"]))

C:\ProgramData\Anaconda3\lib\site-packages\pgmpy\inference\ExactInference.py in query(self, variables, evidence, virtual_evidence, elimination_order, joint, show_progress)
    297         # Make a copy of the original model as it will be replaced during pruning.
    298         if isinstance(self.model, BayesianModel):
--> 299             self.model, evidence = self._prune_bayesian_model(variables, evidence)
    300         self._initialize_structures()
    301 

C:\ProgramData\Anaconda3\lib\site-packages\pgmpy\inference\base.py in _prune_bayesian_model(self, variables, evidence)
    151 
    152         # Step 2: Reduce the model to ancestral graph of [`variables` + `evidence`]
--> 153         bn = bn.get_ancestral_graph(list(variables) + list(evidence.keys()))
    154 
    155         # Step 3: Since all the CPDs are lost, add them back. Also marginalize them if some

AttributeError: 'SubDiGraph' object has no attribute 'get_ancestral_graph'

问题解决

我的python版本是3.6,出现这个问题。我同事3.7没有问题。怀疑版本问题。
公司电脑conda更新python版本又有权限写入问题。所以建了一个python3.7的虚拟环境。在这个环境中重新安装pgmpy包。问题解决。

总结

初步来看,‘SubDiGraph’ object has no attribute 'get_ancestral_graph’错误是由于python版本引起的,建议升级python版本到3.7.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值