Source code for UCTB.model.HMM

import numpy as np
from hmmlearn import hmm


[docs]class HMM(object): def __init__(self, num_components, n_iter, hmm_kernal=hmm.GaussianHMM): self._num_components = num_components self._iter = n_iter self._hmm = hmm_kernal(n_components=self._num_components, n_iter=self._iter, covariance_type='full')
[docs] def fit(self, x): self._hmm.fit(x) if self._hmm.monitor_.converged: print('Status: converged')
[docs] def predict(self, x, length): # predict the state for each element of X # and store the last state last_state = self._hmm.predict_proba(x)[-1:] pre_state = [] pre_observation = [] for i in range(length): # predict the state of next moment using the transmat last_state = np.dot(last_state, self._hmm.transmat_) pre_state.append(last_state) # dot product between the state-probability and state-means pre_observation.append([np.dot(last_state, self._hmm.means_)[0][0]]) return pre_observation