sequence modelling using HMMs
Project description
sequence-modelling
Numerically optimized time-series and sequence modelling in Python.
Key features
- Hidden Markov Models and Quasi-Deterministic Hidden Markov Models
- Numerically stable: floating point arithmetic performed in log space to avoid underflow
- Easy to use (based on the scikit-learn API)
- Pure Python and Numpy based
- Open source and commercially usable (BSD license)
- Support for discrete and continuous (Gaussian) emissions
Installation
The easiest way to install sequence-modelling is using pip:
pip install sequence-modelling
Example usage
import numpy as np
from sequence_modelling.emmissions import Gaussian
from sequence_modelling.hmm import StandardHMM
import sequence_modelling.hmmviz as plt
# define a 2-state HMM estimator with one-dimensional Gaussian emissions
# the transition matrix
A = np.array([[0.6, 0.4],
[0.3, 0.7],
[0.5, 0.5]])
# the emission object
O = Gaussian(mu=np.array([[-100.0, 100.0]]),
covar=np.array([[[10.0]], [[10.0]]]))
# build the HMM model object
hmm = StandardHMM(A, O)
# sample 100 observations from the generative model
obs, path = hmm.sample(dim=1, N=100)
# fit the model to the data
likelihood, ll, duration, rankn, res = hmm.fit([obs])
# decode (predict) the most likely state sequence using the Viterbi algorithm
decoded_path = hmm.viterbi(obs)
# visualize the decoded state sequence
from matplotlib.pyplot import figure, show
fa = figure()
plt.view_viterbi(fa.add_subplot(1, 1, 1), [obs], [decoded_path], hmm.O.mu, seq=0)
fa.tight_layout()
show()
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
sequence_modelling-0.1.4.tar.gz
(18.8 kB
view hashes)
Built Distribution
Close
Hashes for sequence_modelling-0.1.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 67867e5b6a3d311047eb832a8b74183ace7f78c0f7a31bee580e7f381b947150 |
|
MD5 | 1f40019f6853ac0d934597d7e34943fc |
|
BLAKE2b-256 | b7fd46579b4d3f6978669feba777f2bc377844cf45fed6f9b4cdaf2ee9870be0 |