ML--HMM(隐马尔可夫模型及python的实现2)

lazyfrog 发布于2年前
0 条问题

1.HMM的应用1,这个代码不知道出处了,若有侵权请联系本文作者删除,注释为本人所加。

2.对基本的HMM需要进一步了解的,请戳这里

3.下面是HMM代码的解释之一

# _*_ coding:utf-8 _*_
# __author__='dragon'
""" test HMM """
from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
from hmmlearn import hmm
##这里要求先装好了hmm这个包
states = ["Rainy", "Sunny"]##隐藏状态
n_states = len(states)##长度

observations = ["walk", "shop", "clean"]##可观察的状态
n_observations = len(observations)##可观察序列的长度

start_probability = np.array([0.6, 0.4])##开始转移概率
##转移矩阵
transition_probability = np.array([
  [0.7, 0.3],
  [0.4, 0.6]
])
##混淆矩阵
emission_probability = np.array([
  [0.1, 0.4, 0.5],
  [0.6, 0.3, 0.1]
])

#构建了一个MultinomialHMM模型,这模型包括开始的转移概率,隐含间的转移矩阵A(transmat),隐含层到可视层的混淆矩阵emissionprob,下面是参数初始化
model = hmm.MultinomialHMM(n_components=n_states)
model._set_startprob(start_probability)
model._set_transmat(transition_probability)
model._set_emissionprob(emission_probability)

# predict a sequence of hidden states based on visible states
bob_says = [2, 2, 1, 1, 2, 2]##预测时的可见序列
logprob, alice_hears = model.decode(bob_says, algorithm="viterbi")
print logprob##该参数反映模型拟合的好坏
##最后输出结果
print "Bob says:", ", ".join(map(lambda x: observations[x], bob_says))
print "Alice hears:", ", ".join(map(lambda x: states[x], alice_hears))

4,那么问题来了,怎么训练这个HMM模型来获取模型参数呢,请关注后面更新。。。。。。

需要 登录 后回复方可回复, 如果你还没有账号你可以 注册 一个帐号。