簡體   English   中英

hmmlearn:給定完整的觀察序列1:T,如何在時間T + 1獲得隱藏狀態概率的預測

[英]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.

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