隱馬爾科夫模型框架及python實現

2021-09-11 09:49:07 字數 2345 閱讀 3610

**nlp學習筆記(隱馬爾可夫模型)**
關於隱馬爾科夫模型,主要是包含五大要素(以天氣和鍛鍊為例)

①隱狀態

②顯狀態

③初狀態

④轉換概率(矩陣表示)

transition_probability = ,

『sunny』 : ,

}[[0.7,0.3]

[0.4,0.6]]

⑤輸出概率

『sunny』:

}question:求解最可能3天的隱態序列(求最可能的天氣序列)?

ps:第一天進行的專案的是 長跑

①第一天

晴天概率: p(sunny)* p(run|sunny) = 0.4 * 0.8 = 0.32

雨天概率: p(rainy)* p(run|rainy) = 0.6 * 0.2 = 0.12

所以第一天更大概率是晴天

②從第二天開始,對於每天的天氣皆有 p(昨天某一種天氣)* p(昨天天氣----->現在天氣)* p(現在天氣|當前活動) 。通過和①同樣的比較方法實現對現在天氣的**,最後選擇最後一天概率較大天氣的隱序列。

以下為**實現:

#關於馬爾科夫模型的實現

#隱狀態  顯狀態

from numpy import*

import numpy as np

def two_steps(p_2_sunny, p_2_rainy,act):

if act == 0:

p_sunny_1 = p_2_sunny * 0.6 * 0.8

p_sunny_2 = p_2_rainy * 0.3 * 0.8

if p_sunny_1 < p_sunny_2:

p_sunny_1 = p_sunny_2

p_rainy_1 = p_2_sunny * 0.4 * 0.2

p_rainy_2 = p_2_rainy * 0.7 * 0.2

if p_rainy_1 < p_rainy_2:

p_rainy_1 = p_rainy_2

if act == 1:

p_sunny_1 = p_2_sunny * 0.6 * 0.1

p_sunny_2 = p_2_rainy * 0.3 * 0.1

if p_sunny_1 < p_sunny_2:

p_sunny_1= p_sunny_2

p_rainy_1 = p_2_sunny * 0.4 * 0.7

p_rainy_2 = p_2_rainy * 0.7 * 0.7

if p_rainy_1 < p_rainy_2:

p_rainy_1 = p_rainy_2

if act == 2:

p_sunny_1 = p_2_sunny * 0.6 * 0.1

p_sunny_2 = p_2_rainy * 0.3 * 0.1

if p_sunny_1 < p_sunny_2:

p_sunny_1 = p_sunny_2

p_rainy_1 = p_2_sunny * 0.4 * 0.1

p_rainy_2 = p_2_rainy * 0.7 * 0.1

if p_rainy_1 < p_rainy_2:

p_rainy_1 = p_rainy_2

return p_sunny_1,p_rainy_1

instate =

p_berain = 0.6

p_besunny = 0.4 #起始隱狀態

#顯狀態陣列 run : 0 , gym : 1, rest :2

out_state = [2,1,2,0,1,2,0]

#轉化矩陣

e_1 = mat([[0.7, 0.3],

[0.4,0.6]])

# 輸出矩陣

e_2 = mat([[0.2,0.7,0.1],

[0.8,0.1,0.1]])

#第一天

p_sunny = 0.4 * 0.8

p_rainy = 0.6 * 0.2

#第二天之後

for i in range(len(out_state)- 1):

p_sunny,p_rainy = two_steps(p_sunny,p_rainy,2)

if p_sunny > p_rainy:

else:

print(instate)

注:更為詳細資料可見[

輸出結果:['sunny', 'sunny', 'sunny', 'sunny', 'rainy', 'rainy', 'rainy']

ttps:

馬爾科夫模型與隱馬爾科夫模型

隨機過程 是隨時間而隨機變化的過程。又稱為隨機函式。馬爾科夫模型 vmm 它描述了一類重要的隨機過程。乙個系統有有限個狀態集s 隨時間推移,該系統將同某一狀態轉移到另一狀態。q s1,s2,sn 為一隨機變數序列,隨機變數取值為狀態集s中的乙個狀態,設時間t時狀態為qt。對系統的描述通常是給出當前時...

隱馬爾科夫模型

隱馬爾科夫 hiddenmarkov model 簡稱為hmm,hmm資料相當豐富,推薦參見 hmm學習最佳範例與崔曉源的部落格 一文,本文只對hmm進行簡要介紹,然後說明開源ghmm實現在linux環境的搭建,hmm的開源實現有眾多不同語言的實現。馬爾科夫模型 一階馬爾科夫模型假設為 1 t l時...

隱馬爾科夫模型

一 介紹 introduction 我們通常都習慣尋找乙個事物在一段時間裡的變化模式 規律 這些模式發生在很多領域,比如計算機中的指令序列,句子中的詞語順序和口語單詞的因素修咧等等,事實上任何領域中的一系列事件都有可能產生有用的模式。考慮乙個簡單的例子,有人試圖通過一片海藻推斷天氣 民間傳說告訴我們...