李航书上隐马尔科夫模型案例的实验结果复现
生活随笔
收集整理的這篇文章主要介紹了
李航书上隐马尔科夫模型案例的实验结果复现
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
主要是轉(zhuǎn)載自:
https://www.cnblogs.com/pinard/p/7001397.html
我自己加了些注釋以及修復了一個在python2.7下面運行的bug
1) 評估觀察序列概率。 給定模型λ=(A,B,π)和觀測序列O 計算P(O|λ)2)模型參數(shù)學習問題。 觀測序列O 輸出λ=(A,B,π)3)預測問題,也稱為解碼問題。 已知模型(A,B,π),觀測序列O(o1,o2,···,oT) 求令P(I|O)最大的狀態(tài)序列I=(i1,i2,···,iT)第1個基恩問題和第3個基本問題:
# -*- 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個基本問題-------------------" # print e # print model.score(seen) print "《統(tǒng)計學習方法》P178的HMM第1個基本問題:\nP(O|λ)=",e**model.score(seen)print"---------------下面是隱馬爾科夫第2個基本問題-------------------"print"---------------下面是隱馬爾科夫第3個基本問題-------------------" print"The ball picked:", ", ".join(map(lambda x: observations[x], seen[0])) print"《統(tǒng)計學習方法》P187的HMM第3個基本問題", ", ".join(map(lambda x: states[x], box))第二個基本問題:
# -*- 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)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的李航书上隐马尔科夫模型案例的实验结果复现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TypeError: only inte
- 下一篇: 关于机器学习的一些感想