我試圖通過使用網站https://pomegranate.readthedocs.io/en/latest/BayesianNetwork.html中給出的例子來創建貝葉斯信念網路,但是在給出的例子中,它是針對三個變數的,而我試圖用兩個變數來創建,但總是得到KeyError。('A', 'A', 'B'):
from pomegranate import *
guest = DiscreteDistribution({'A'/span>: 0.5, 'B:0.5})
prize = DiscreteDistribution({'A': 0.5, 'B': 0.5})
monty = ConditionalProbabilityTable(
[['A'/span>, 'A'/span>, 0.5],
['B', 'B', 0.5] 。
['A', 'B', 0.5] 。
['B', 'A', 0.5]], [guest, prize] )
s1 = Node(guest, name="guest")
s2 = Node(prize, name="prize")
s3 = Node(monty, name="monty")
model = BayesianNetwork("Monty Hall Problem")
model.add_states(s1, s2, s3)
model.add_edge(s1, s3)
model.add_edge(s2, s3)
model.bake()
如果有人能幫助我解決這個問題,那將是莫大的幫助,我已經盡力了,但還是沒能解決這個問題。
uj5u.com熱心網友回復:
在這個問題中,條件表必須包含3個變數。這是因為條件概率,在這種情況下是由P(Monty|Guess,Prize)給出的。換句話說,為了達到蒙蒂的某種狀態,必須滿足猜測和獎品的聯合概率。因此,任何變數都不能從表格(或條件概率方程)中洗掉。
為了解決你只使用兩個變數的問題,我們需要改變解決問題的方法,忽略 "猜測 "或 "獎品 "的概率,以便使蒙蒂只使用一個變數。而新的概率方程將變成P(Monty|temp)。
from pomegranate import *
temp = DiscreteDistribution({'A'/span>: 0.5, 'B:0.5})
monty = ConditionalProbabilityTable(
[['A'/span>, 'A_prime'/span>, 0.5],
['B', 'B_prime', 0.5] 。
['A', 'B_prime', 0.5] 。
['B', 'A_prime', 0.5]], [temp] )
s1 = Node(temp, name="temp" )
s2 = Node(monty, name="monty")
model = BayesianNetwork("不是Monty Hall問題")
model.add_states(s1, s2)
model.add_edge(s1, s2)
model.bake()
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/316565.html
標籤:
上一篇:梯度下降成本圖與時代問題的關系
