-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathHMM.py
38 lines (30 loc) · 1.44 KB
/
HMM.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!usr/bin/env python
#coding:utf-8
import numpy as np
import scipy.io as sio
class CHMMModel:
'''
A Class for improved HMM
'''
def __init__(self, HiddenStatesNum, ObservationStatesNum):
self.HiddenStatesNum = HiddenStatesNum # The number of hidden states
self.ObservationStatesNum = ObservationStatesNum # The number of observation states
#Pi: size: N; The probability of initial vector.
self.InitProbs = np.zeros(self.HiddenStatesNum, np.float)
#A: size: N*N; The probability of transition matrix.
# a[i][j] represents the probability from state i to state j
self.TransProbs = np.zeros((self.HiddenStatesNum, self.HiddenStatesNum), np.float)
#Theta: size: K*N; The probability of emission matrix.
#Theta[k][i] represents the probability of observed state i at hidden state k.
self.Theta = np.zeros((self.HiddenStatesNum, self.ObservationStatesNum), np.float)
#a, b: size: K;a,b represent the parameters of negative binomial distribution.
self.a = np.zeros(self.HiddenStatesNum, np.float)
self.b = np.zeros(self.HiddenStatesNum, np.float)
def copy(self):
copy_HMM = CHMMModel(self.HiddenStatesNum, self.ObservationStatesNum)
copy_HMM.InitProbs = self.InitProbs
copy_HMM.TransProbs = self.TransProbs
copy_HMM.Theta = self.Theta
copy_HMM.a = self.a
copy_HMM.b = self.b
return copy_HMM