俺とプログラミング

某IT企業でエンジニアをしてます。このブログではプログラミングに関わることを幅広く発信します。

Pythonの隠れマルコフモデルライブラリGHMMの使い方

Python隠れマルコフモデルライブラリ、GHMMの使いかたを軽く紹介。
コードを見て頂ければなにをやっているか分かると思います。

from ghmm import *

# 初期遷移確率行列
A = [[0.6, 0.4, 0], [0, 0.6, 0.4], [0.0, 0.0, 1.0]]

# 初期出力確率行列
B = [[0.25, 0.25, 0.25, 0.25], [0.25, 0.25, 0.25, 0.25], [0.25, 0.25, 0.25, 0.25]]

# 初期状態確率(left-to-rightモデル)
pi = [1.0, 0, 0]

# とり得るすべての記号を定義
sigma = IntegerRange(0, 4)
#sigma = Alphabet('a','c','d','b') #文字の場合

# 隠れマルコフモデルの生成
hmm = HMMFromMatrices(sigma, DiscreteDistribution(sigma), A, B, pi)

# 確率の合計が1になるように正規化
hmm.normalize()

# ListからのEmissionSequenceの生成
train_seq = EmissionSequence(sigma, [0, 0, 0, 1, 3, 2, 2, 3])

# BaumWelchアルゴリズムによる学習
hmm.baumWelch(train_seq)

# テスト用のEmissionSequenceの生成
test_seq = EmissionSequence(sigma, [0, 0, 0, 1, 3, 2, 2])

# viterbiアルゴリズムによる状態遷移と尤度の計算
result = hmm.viterbi(test_seq)

print result
# out: ([0, 0, 0, 1, 2, 2, 2], -3.988984046564275)

# サンプリング (長さ5のものを10個)
hmm.sample( 10, 5 )


Copyright © 2016 ttlg All Rights Reserved.