Python中Pomegranate 1.0.4模块方法未定义问题求助
Pomegranate 1.0.4 类未定义报错的解决办法
问题原因
Pomegranate 1.x版本重构了模块结构,原0.x版本直接在根模块下的DiscreteDistribution、ConditionalProbabilityTable、State等类,现在被拆分到对应子模块中,from pomegranate import *无法自动导入这些类,因此抛出NameError。
解决步骤
- 修改导入语句,从对应子模块明确导入所需类:
from pomegranate.distributions import DiscreteDistribution, ConditionalProbabilityTable from pomegranate.bayesian_network import State
- 修正后的完整代码示例(补充了
ConditionalProbabilityTable和State的完整参数):
from pomegranate.distributions import DiscreteDistribution, ConditionalProbabilityTable from pomegranate.bayesian_network import State # 定义每个节点的分布 guest = DiscreteDistribution({'A': 1./3, 'B': 1./3, 'C': 1./3}) prize = DiscreteDistribution({'A': 1./3, 'B': 1./3, 'C': 1./3}) # 完整的蒙提霍尔问题条件概率表 monty = ConditionalProbabilityTable( [ ['A', 'A', 'B', 0.5], ['A', 'A', 'C', 0.5], ['A', 'B', 'C', 1.0], ['A', 'C', 'B', 1.0], ['B', 'A', 'C', 1.0], ['B', 'B', 'A', 0.5], ['B', 'B', 'C', 0.5], ['B', 'C', 'A', 1.0], ['C', 'A', 'B', 1.0], ['C', 'B', 'A', 1.0], ['C', 'C', 'A', 0.5], ['C', 'C', 'B', 0.5] ], [guest, prize] ) # 初始化状态 s1 = State(guest, name="guest") s2 = State(prize, name="prize") s3 = State(monty, name="monty")
- 验证安装正确性(可选)
如果修改导入后仍报错,可重新安装指定版本:
pip uninstall pomegranate pip install pomegranate==1.0.4
内容的提问来源于stack exchange,提问作者하창민
相关产品推荐
相关产品推荐

