簡體   English   中英

如何使用hidden_​​markov修復廣播狀態和發射概率的錯誤?

[英]How can I fix error of broadcasting state and emission probability using hidden_markov?

在其文檔的一個簡單示例中進行細微更改時,hidden_​​markov軟件包出現問題。 在下面的代碼中,我嘗試2種狀態和3種可能的觀察結果(在文檔示例中,有2種可能的觀察結果,並且代碼運行正常):

states = ('s', 't')
possible_observation = ('A', 'B', 'C')

# Numpy arrays of the data

start_probability = np.matrix( '0.5 0.5')
transition_probability = np.matrix('0.6 0.4 ; 0.3 0.7')
emission_probability = np.matrix( '0.3 0.2 0.5 ; 0.3 0.1 0.6')

# Initialize class object

test = hmm(states,possible_observation,
           start_probability,
           transition_probability,
           emission_probability)

observations = ('A', 'B','B','A', 'C')
obs4 = ('B', 'C', 'A','B')
observation_tuple = []
observation_tuple.extend( [observations,obs4] )
quantities_observations = [18, 28]
num_iter=1000

e,t,s = test.train_hmm(observation_tuple,num_iter,quantities_observations)

運行代碼后,出現錯誤:

ValueError: operands could not be broadcast together with shapes (2,3) (1,2)

有趣的是,當我嘗試3種狀態和3種可能的觀察結果(並根據此更改修改概率矩陣)時,代碼可以正常工作。 我丟失了某些東西,或者狀態數和可能的觀察值應該始終相等,這沒有任何意義。

根據您在上面提供的矩陣,只有兩個形狀分別為(2,3)(1,2)的矩陣分別為emission_probability概率和start_probability概率,誤差為矩陣維數不匹配。 為了匹配矩陣尺寸,以便可以將它們用於點積的計算。

emission_probability = emission_probability.T
start_probability = start_probability.T

必須在初始化類對象之前完成此步驟。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM