[파이썬 용 HMM 라이브러리][scikit-learn user guide] 1.4.7 Hidden Markov Models(2)
Machine Learning/HMM 2015. 3. 2. 21:00내가 하고 싶은 문제에 대한 코드가 user guide에는 제대로 나와 있지 않아 검색해보다가 제대로 된 예제코드가 있어서 아래에 주소를 남겨 두었다.
http://sujitpal.blogspot.kr/2013/03/the-wikipedia-bob-alice-hmm-example.html
예제코드는 아래의 예제를 코딩한 것이라고 하는데 관측확률 입력값만 다를 뿐 모든 것이 '패턴인식-오일식 저'의 예제 7.4 여자친구의 삶과 동일했다.
http://en.wikipedia.org/wiki/Hidden_Markov_model#A_concrete_example
위 예제에서는 디코딩에 대한 예제만 있어서 이 예제에서 했던 방식을 통해 guide를 참고하여 7.4.1 평가 문제까지 풀었다.
guide출처 : http://scikit-learn.org/0.6/modules/generated/scikits.learn.hmm.MultinomialHMM.html
7.4.3 학습은 다음에 다루겠다.
코드 내용은 아래와 같다.
from __future__ import division
import numpy as np
from hmmlearn import hmm
states = ["Rainy", "Sunny"]
n_states = len(states)
observations = ["walk", "shop", "clean"]
n_observations = len(observations)
start_probability = np.array([0.6, 0.4])
transition_probability = np.array([
[0.7, 0.3],
[0.4, 0.6]
])
emission_probability = np.array([
[0.1, 0.4, 0.5],
[0.6, 0.3, 0.1]
])
model = hmm.MultinomialHMM(n_components=n_states)
model._set_startprob(start_probability)
model._set_transmat(transition_probability)
model._set_emissionprob(emission_probability)
# predict a sequence of hidden states based on visible states
#bob_says = [0, 2, 1, 1, 2, 0]
bob_says = [0, 0, 2, 1]
prob, arr = model.eval(bob_says)
#print model.decode(bob_says)
print "evaluation : ", exp(prob)
logprob, alice_hears = model.decode(bob_says, algorithm="viterbi")
print "Bob says:", ", ".join(map(lambda x: observations[x], bob_says))
print "Alice hears:", ", ".join(map(lambda x: states[x], alice_hears))
mode.eval은 log를 취한 값을 return해 주기 때문에 지수함수를 취한 값을 최종 결과 값으로 생각하면 된다.
이로써 내가 하려고 했던 평가와 디코딩에 대한 코딩 실험이 끝났다.
이제 학습을 공부할 차례인다.
'Machine Learning > HMM' 카테고리의 다른 글
[파이썬 용 HMM 라이브러리][YAHMM] YAHMM라이브러리 (0) | 2015.03.03 |
---|---|
[파이썬 용 HMM 라이브러리][hmmpytk] (0) | 2015.02.27 |
파이썬 용 HMM 라이브러리 (0) | 2015.02.27 |
[파이썬 용 HMM 라이브러리][scikit-learn user guide] 1.4.7 Hidden Markov Models (0) | 2015.02.26 |
[파이썬 용 HMM 라이브러리][scikit-learn user guide] (0) | 2015.02.25 |