[英]hmmlearn: how to get the prediction for the hidden state probability at time T+1, given a full observation sequence 1:T
我正在使用hmmlearn的GaussianHMM訓練具有高斯觀測值的隱馬爾可夫模型。 每個隱藏狀態k都有其對應的高斯參數:mu_k,Sigma_k。
訓練模型后,我要計算以下數量:
P(z_ {T + 1} = j | x_ {1:T}),
其中j = 1,2,... K,K是隱藏狀態的數量。
給定完整的觀察序列:x_1,x_2,...,x_T,上述概率基本上是一個提前一步的隱藏狀態概率,其中x_i,i = 1,...,T用於訓練HMM模型。
我閱讀了文檔 ,但是找不到計算此概率的函數。 有什么解決方法嗎?
您正在尋找的概率僅僅是過渡矩陣的一行。 轉移矩陣的第n行給出已知在t
時刻系統處於狀態的時間在t+1
轉移到每個狀態的概率。
為了知道給定一系列觀測值x_1,...,x_t
在時間t
處系統處於哪種狀態x_1,...,x_t
可以使用Viterbi算法,該算法是hmmlearn
predict
方法的默認設置。
model = hmm.GaussianHMM(n_components=3, covariance_type="full", n_iter=100) # Viterbi is set by default as the 'algorithm' optional parameter.
model.fit(data)
state_sequence = model.predict(data)
prob_next_step = model.transmat_[state_sequence[-1], :]
我建議您仔細閱讀本文檔 ,其中顯示了具體的使用示例。
訓練完HMM model
,您可以按照以下所示的1:t
觀測值X
獲得t+1
狀態:
import numpy as np
from sklearn.utils import check_random_state
sates = model.predict(X)
transmat_cdf = np.cumsum(model.transmat_, axis=1)
random_sate = check_random_state(model.random_state)
next_state = (transmat_cdf[states[-1]] > random_state.rand()).argmax()
根據t
狀態和transmat_
生成t+1
狀態
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.