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