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

被折叠的 条评论
为什么被折叠?



