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模型。
我阅读了 documentation,但找不到计算此概率的函数。有什么解决方法吗?
你要找的概率只是转移矩阵的一行。转移矩阵的第 n 行给出了在时间 t+1
知道系统在时间 t
.
时转移到每个状态的概率
为了知道系统在时间 t
给定一系列观察值 x_1,...,x_t
的状态,可以使用维特比算法,这是该方法的默认设置 predict
在 hmmlearn
.
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], :]
我建议你仔细看看这个显示具体使用示例的 documentation。
训练好 HMM model
后,您可以获得 t+1
给定 1:t
观察值 X
的状态,如下所示:
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+1
状态根据t
状态和transmat_
状态生成
我正在使用 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模型。
我阅读了 documentation,但找不到计算此概率的函数。有什么解决方法吗?
你要找的概率只是转移矩阵的一行。转移矩阵的第 n 行给出了在时间 t+1
知道系统在时间 t
.
为了知道系统在时间 t
给定一系列观察值 x_1,...,x_t
的状态,可以使用维特比算法,这是该方法的默认设置 predict
在 hmmlearn
.
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], :]
我建议你仔细看看这个显示具体使用示例的 documentation。
训练好 HMM model
后,您可以获得 t+1
给定 1:t
观察值 X
的状态,如下所示:
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+1
状态根据t
状态和transmat_