hmmlearn使用簡介

隱含馬爾可夫模型(Hidden Markov Model睹簇,HMM)最初是在20世紀(jì)60年代后半期,由Leonard E. Baum和其他一些作者在一系列統(tǒng)計學(xué)論文中描述的械媒。其最初應(yīng)用于語音識別領(lǐng)域劲妙。

1980年代后半期,HMM開始應(yīng)用到生物序列本昏,尤其是DNA序列的分析中。隨后枪汪,在生物信息學(xué)領(lǐng)域涌穆,HMM逐漸成為一項不可或缺的技術(shù)。

本文內(nèi)容包含來自:
[1] 用hmmlearn學(xué)習(xí)隱馬爾科夫模型HMM
[2] 官方文檔

hmmlearn

hmmlearn曾經(jīng)是scikit-learn項目的一部分雀久,現(xiàn)已獨立成單獨的Python包宿稀,可直接通過pip進行安裝,為無監(jiān)督隱馬爾可夫模型赖捌。其官方文檔網(wǎng)址為https://hmmlearn.readthedocs.io/en/stable/祝沸。其有監(jiān)督的版本為seqlearn。

pip3 install hmmlearn

hmmlearn提供三種模型:

名稱 簡介 觀測狀態(tài)
hmm.GaussianHMM Hidden Markov Model with Gaussian emissions. 連續(xù)
hmm.GMMHMM Hidden Markov Model with Gaussian mixture emissions. 連續(xù)
hmm.MultinomialHMM Hidden Markov Model with multinomial (discrete) emissions 離散

MultinomialHMM

方法聲明為

class hmmlearn.hmm.MultinomialHMM(n_components=1, startprob_prior=1.0, transmat_prior=1.0,
algorithm='viterbi', random_state=None, n_iter=10, tol=0.01, verbose=False,  params='ste', init_params='ste')

其中巡蘸,較為常用(或?qū)⒏拢┑膮?shù)為:

  • n_components:(int)隱含狀態(tài)個數(shù)
  • n_iter:(int, optional)訓(xùn)練時循環(huán)(迭代)最大次數(shù)
  • tol:(float, optional)Convergence threshold. EM will stop if the gain in log-likelihood is below this value.
  • verbose:(bool, optional)賦值為True時奋隶,會向標(biāo)準(zhǔn)輸出輸出每次迭代的概率(score)與本次
  • init_params:(string, optional)決定哪些參數(shù)會在訓(xùn)練時被初始化。‘s’ for startprob, ‘t’ for transmat, ‘e’ for emissionprob悦荒。空字符串""代表全部使用用戶提供的參數(shù)進行訓(xùn)練嘹吨。

定義搬味、使用:

import numpy as np
from hmmlearn import hmm

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, n_iter=20, tol=0.001)
model.startprob_=start_probability
model.transmat_=transition_probability
model.emissionprob_=emission_probability

維特比算法預(yù)測狀態(tài)

有說法稱,其返回結(jié)果為ln(prob)蟀拷,文檔原文為“the log probability”

seen = np.array([[0,1,0]]).T
logprob, box = model.decode(seen, algorithm="viterbi")
print("The ball picked:", ", ".join(map(lambda x: observations[x], seen)))
print("The hidden box", ", ".join(map(lambda x: states[x], box)))

輸出為

('The ball picked:', 'red, white, red')
('The hidden box', 'box3, box3, box3')

計算觀測的概率

print model.score(seen)

輸出為

-2.03854530992

訓(xùn)練與數(shù)據(jù)準(zhǔn)備

import numpy as np
from hmmlearn import hmm

states = ["box 1", "box 2", "box3"]
n_states = len(states)

observations = ["red", "white"]
n_observations = len(observations)
model = hmm.MultinomialHMM(n_components=n_states, n_iter=20, tol=0.01)

D1 = [[1], [0], [0], [0], [1], [1], [1]]
D2 = [[1], [0], [0], [0], [1], [1], [1], [0], [1], [1]]
D3 = [[1], [0], [0]]

X = numpy.concatenate([D1, D2, D3])

model.fit(X)
print model.startprob_
print model.transmat_
print model.emissionprob_
print model.score(X)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碰纬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子问芬,更是在濱河造成了極大的恐慌悦析,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件此衅,死亡現(xiàn)場離奇詭異强戴,居然都是意外死亡亭螟,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門骑歹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來预烙,“玉大人,你說我怎么就攤上這事道媚”獾В” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵最域,是天一觀的道長谴分。 經(jīng)常有香客問我,道長镀脂,這世上最難降的妖魔是什么狸剃? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮狗热,結(jié)果婚禮上钞馁,老公的妹妹穿的比我還像新娘。我一直安慰自己匿刮,他們只是感情好僧凰,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著熟丸,像睡著了一般训措。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上光羞,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天绩鸣,我揣著相機與錄音,去河邊找鬼纱兑。 笑死呀闻,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的潜慎。 我是一名探鬼主播捡多,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼铐炫!你這毒婦竟也來了垒手?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤倒信,失蹤者是張志新(化名)和其女友劉穎科贬,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鳖悠,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡榜掌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年优妙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唐责。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡鳞溉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鼠哥,到底是詐尸還是另有隱情熟菲,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布朴恳,位于F島的核電站抄罕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏于颖。R本人自食惡果不足惜呆贿,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望森渐。 院中可真熱鬧做入,春花似錦、人聲如沸同衣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耐齐。三九已至浪秘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間埠况,已是汗流浹背耸携。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辕翰,地道東北人夺衍。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像金蜀,于是被迫代替她去往敵國和親刷后。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354