This package has fast and flexible code for simulating, learning, and performing inference in a variety of state space models. Currently, it supports:
We support the following observation models:
HMM inference is done with either expectation maximization (EM) or stochastic gradient descent (SGD). For SLDS, we use stochastic variational inference (SVI).
Here's a snippet to illustrate how we simulate from an HMM.
import ssm T = 100 # number of time bins K = 5 # number of discrete states D = 2 # dimension of the observations # make an hmm and sample from it hmm = ssm.HMM(K, D, observations="gaussian") z, y = hmm.sample(T)
Fitting an HMM is simple.
test_hmm = ssm.HMM(K, D, observations="gaussian") test_hmm.fit(y) zhat = test_hmm.most_likely_states(y)
The notebooks folder has more thorough, complete examples of HMMs, SLDS, and recurrent SLDS.
git clone firstname.lastname@example.org:slinderman/ssm.git cd ssm pip install numpy cython pip install -e .
This will install "from source" and compile the Cython code for fast message passing and gradients.
To install with some parallel support via OpenMP, first make sure that your compiler supports it. OS X's default Clang compiler does not, but you can install GNU gcc and g++ with conda. Once you've set these as your default, you can install with OpenMP support using
USE_OPENMP=True pip install -e .