马尔可夫链模型和隐马尔可夫模型有什么区别?我在维基百科上读过,但无法理解这些差异.
我想将scikits.learn.hmm.GaussianHMM与不同长度的训练序列相匹配.然而,拟合方法通过这样做来防止使用不同长度的序列
obs = np.asanyarray(obs)
Run Code Online (Sandbox Code Playgroud)
它只适用于同样形状的数组列表.有人提示如何继续吗?
n-gram模型的前向后向算法和隐马尔可夫模型(HMM)上的Viterbi算法有什么区别?
当我回顾这两种算法的实现时,我发现的事情只是交易概率来自不同的概率模型.
这两种算法之间有区别吗?
我在搞清楚如何使用Kevin Murphy的HMM工具箱工具箱时遇到了困难.如果有经验的人可以澄清一些概念性问题,那将是一个很大的帮助.我已经以某种方式理解了HMM背后的理论,但令人困惑的是如何实际实现它并提及所有参数设置.
有2个类,所以我们需要2个HMM.
假设训练向量是:class1 O1 = {4 3 5 1 2}和类O_2 = {1 4 3 2 4}.
现在,系统必须将未知序列O3 = {1 3 2 4 4}分类为class1或class2.
matlab machine-learning computer-vision hidden-markov-models
我试图使用隐马尔可夫模型(HMM)来解决一个问题,即我在每个时间点都有不同的观察变量(Yti)和一个隐藏变量(Xt).为清楚起见,让我们假设所有观察到的变量(Yti)都是分类的,其中每个Yti传达不同的信息,因此可能具有不同的基数.下图给出了一个说明性的例子,其中M = 3.
我的目标是使用Baum-Welch算法从我观察到的变量序列(Yti)中训练HMM的过渡,发射和先验概率.比方说,Xt最初会有2个隐藏状态.
我已经阅读了一些教程(包括着名的Rabiner论文),并阅读了一些HMM软件包的代码,即" MatLab中的HMM工具箱 "和" Python中的hmmpytk包 ".总的来说,我进行了广泛的网络搜索,我所能找到的所有资源 - 仅涵盖了每个时间点只有一个观察变量(M = 1)的情况.这越来越让我觉得HMM不适合具有多个观察变量的情况.
谢谢.
编辑: 在本文中,图中描述的情况被描述为动态朴素贝叶斯,其中 - 在训练和估计算法方面 - 需要对单变量HMM略微扩展Baum-Welch和Viterbi算法.
我最近一直在研究C++中隐藏马尔可夫模型的实现.我想知道如果我可以使用任何现有的用C++编写的HMM库来使用动作识别(使用OpenCV)?
我想要避免"重新发明轮子"!
是否有可能使用Torch3Vision,即使(看起来像)它被设计用于语音识别?
我的想法是,如果我们可以将特征向量转换为符号/观测(使用矢量量化 - Kmeans聚类),我们可以使用这些符号进行解码,推理,参数学习(Baum-Welch算法).这样它就可以在OpenCV中使用Torch3Vision.
任何有关这方面的帮助将非常感激.
opencv machine-learning computer-vision hidden-markov-models
我正在玩Hidden Markov模型来解决股市预测问题.我的数据矩阵包含特定安全性的各种功能:
01-01-2001, .025, .012, .01
01-02-2001, -.005, -.023, .02
Run Code Online (Sandbox Code Playgroud)
我适合一个简单的GaussianHMM:
from hmmlearn import GaussianHMM
mdl = GaussianHMM(n_components=3,covariance_type='diag',n_iter=1000)
mdl.fit(train[:,1:])
Run Code Online (Sandbox Code Playgroud)
使用模型(λ),我可以解码观察向量以找到对应于观察向量的最可能的隐藏状态序列:
print mdl.decode(test[0:5,1:])
(72.75, array([2, 1, 2, 0, 0]))
Run Code Online (Sandbox Code Playgroud)
在上面,我已经解码了观察向量O t =(O 1,O 2,...,O d)的隐藏状态序列,其包含测试集中的前五个实例.我想估计测试集中第六个实例的隐藏状态.想法是迭代第六个实例的一组离散的可能特征值,并选择具有最高似然性的观测序列O t + 1 argmax = P(O 1,O 2,...,O d + 1 |λ ).一旦我们观察到O d + 1的真实特征值,我们就可以将序列(长度为5)移动一次并重新执行:
l = 5
for i in xrange(len(test)-l):
values = []
for a in arange(-0.05,0.05,.01):
for b in arange(-0.05,0.05,.01):
for c in arange(-0.05,0.05,.01):
values.append(mdl.decode(vstack((test[i:i+l,1:],array([a,b,c])))))
print …
Run Code Online (Sandbox Code Playgroud) python markov-chains markov-models hidden-markov-models hmmlearn
我想开始使用HMM,但不知道如何去做.人们可以在这里给我一些基本的指示,在哪里看?
不仅仅是理论,我喜欢做很多实践.所以,我更喜欢资源,我可以编写小代码片段来检查我的学习,而不仅仅是干文本.
在Matlab Statistics工具箱中,有几个用于处理隐马尔可夫模型(HMM)的函数,但它们都使用离散的观察符号.有没有人知道是否有可以处理连续观察变量的工具箱或功能(可能来自第三方)?
该Viterbi算法发现的隐马尔可夫模型隐藏状态的最有可能的序列。我目前正在使用hhquark的以下出色代码。
import numpy as np
def viterbi_path(prior, transmat, obslik, scaled=True, ret_loglik=False):
'''Finds the most-probable (Viterbi) path through the HMM state trellis
Notation:
Z[t] := Observation at time t
Q[t] := Hidden state at time t
Inputs:
prior: np.array(num_hid)
prior[i] := Pr(Q[0] == i)
transmat: np.ndarray((num_hid,num_hid))
transmat[i,j] := Pr(Q[t+1] == j | Q[t] == i)
obslik: np.ndarray((num_hid,num_obs))
obslik[i,t] := Pr(Z[t] | Q[t] == i)
scaled: bool
whether or not to normalize the probability trellis along …
Run Code Online (Sandbox Code Playgroud) python ×3
algorithm ×2
matlab ×2
viterbi ×2
hmmlearn ×1
markov ×1
nlp ×1
opencv ×1
scikit-learn ×1
scikits ×1
statistics ×1
time-series ×1