李航书上隐马尔科夫模型案例的实验结果复现
生活随笔
收集整理的這篇文章主要介紹了
李航书上隐马尔科夫模型案例的实验结果复现
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
主要是轉(zhuǎn)載自:
https://www.cnblogs.com/pinard/p/7001397.html
我自己加了些注釋以及修復(fù)了一個(gè)在python2.7下面運(yùn)行的bug
1) 評(píng)估觀察序列概率。 給定模型λ=(A,B,π)和觀測(cè)序列O 計(jì)算P(O|λ)2)模型參數(shù)學(xué)習(xí)問(wèn)題。 觀測(cè)序列O 輸出λ=(A,B,π)3)預(yù)測(cè)問(wèn)題,也稱(chēng)為解碼問(wèn)題。 已知模型(A,B,π),觀測(cè)序列O(o1,o2,···,oT) 求令P(I|O)最大的狀態(tài)序列I=(i1,i2,···,iT)第1個(gè)基恩問(wèn)題和第3個(gè)基本問(wèn)題:
# -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') # @Author: appleyuchi # @Date: 2018-12-31 16:11:34 # @Last Modified by: appleyuchi # @Last Modified time: 2018-12-31 17:19:26import numpy as np from hmmlearn import hmm from math import log from math import e states = ["box 1", "box 2", "box3"] n_states = len(states)observations = ["red", "white"] n_observations = len(observations)start_probability = np.array([0.2, 0.4, 0.4])transition_probability = np.array([[0.5, 0.2, 0.3],[0.3, 0.5, 0.2],[0.2, 0.3, 0.5] ])emission_probability = np.array([[0.5, 0.5],[0.4, 0.6],[0.7, 0.3] ])model = hmm.MultinomialHMM(n_components=n_states) model.startprob_=start_probability#π model.transmat_=transition_probability#轉(zhuǎn)移概率A model.emissionprob_=emission_probability#摸取小球的概率Bseen = np.array([[0,1,0]]).T#這里的意思是輸入序列為(紅,白,紅)logprob, box = model.decode(seen, algorithm="viterbi") # print "observations=",observations # print "seen=",seen print"box=",boxprint"---------------下面是隱馬爾科夫第1個(gè)基本問(wèn)題-------------------" # print e # print model.score(seen) print "《統(tǒng)計(jì)學(xué)習(xí)方法》P178的HMM第1個(gè)基本問(wèn)題:\nP(O|λ)=",e**model.score(seen)print"---------------下面是隱馬爾科夫第2個(gè)基本問(wèn)題-------------------"print"---------------下面是隱馬爾科夫第3個(gè)基本問(wèn)題-------------------" print"The ball picked:", ", ".join(map(lambda x: observations[x], seen[0])) print"《統(tǒng)計(jì)學(xué)習(xí)方法》P187的HMM第3個(gè)基本問(wèn)題", ", ".join(map(lambda x: states[x], box))第二個(gè)基本問(wèn)題:
# -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8')import numpy as np from hmmlearn import hmmstates = ["box 1", "box 2", "box3"] n_states = len(states)observations = ["red", "white"] n_observations = len(observations) model2 = hmm.MultinomialHMM(n_components=n_states, n_iter=20, tol=0.01) X2 = np.array([[0,1,0,1],[0,0,0,1],[1,0,1,1]]) print"-------------------------------------------" model2.fit(X2) print "π=",model2.startprob_ print "A=",model2.transmat_ print "B=",model2.emissionprob_ print model2.score(X2) print"-------------------------------------------" model2.fit(X2) print "π=",model2.startprob_ print "A=",model2.transmat_ print "B=",model2.emissionprob_ print model2.score(X2) print"-------------------------------------------" model2.fit(X2) print "π=",model2.startprob_ print "A=",model2.transmat_ print "B=",model2.emissionprob_ print model2.score(X2) 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的李航书上隐马尔科夫模型案例的实验结果复现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: TypeError: only inte
- 下一篇: 关于机器学习的一些感想