eonu / sequentia

Scikit-Learn compatible HMM and DTW based sequence machine learning algorithms in Python.

Home Page:https://pypi.org/project/sequentia/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Move HMMClassifier prior and posterior definition

eonu opened this issue · comments

Move HMMClassifier prior creation in predict() to a separate function:

# Create look-up for prior probabilities
if prior == 'frequency':
total_seqs = sum(model.n_seqs_ for model in self._models_)
prior = {model.label:(model.n_seqs_ / total_seqs) for model in self._models_}
elif prior == 'uniform':
prior = {model.label:(1. / len(self._models_)) for model in self._models_}
else:
prior = {model.label:prior[self._encoder_.transform([model.label]).item()] for model in self._models_}

and similarly for the posterior calculation:

# Lambda for calculating the log un-normalized posteriors as a sum of the log forward probabilities (likelihoods) and log priors
posteriors = lambda x: np.array([model.forward(x) + np.log(prior[model.label]) for model in self._models_])