mchmm.HiddenMarkovModel

class mchmm.HiddenMarkovModel(observations: Optional[Union[list, numpy.ndarray]] = None, states: Optional[Union[list, numpy.ndarray]] = None, tp: Optional[Union[list, numpy.ndarray]] = None, ep: Optional[Union[list, numpy.ndarray]] = None, pi: Optional[Union[list, numpy.ndarray]] = None)

Bases: object

__init__(observations: Optional[Union[list, numpy.ndarray]] = None, states: Optional[Union[list, numpy.ndarray]] = None, tp: Optional[Union[list, numpy.ndarray]] = None, ep: Optional[Union[list, numpy.ndarray]] = None, pi: Optional[Union[list, numpy.ndarray]] = None)

Hidden Markov model.

Parameters
  • observations (Optional[Union[list, np.ndarray]]) – Observations space (of size N).

  • states (Optional[Union[list, np.ndarray]]) – List of states (of size K).

  • tp (Optional[Union[list, np.ndarray]]) – Transition matrix of size K × K which stores transition probability of transiting from state i (row) to state j (col).

  • ep (Optional[Union[list, np.ndarray]]) – Emission matrix of size K × N which stores probability of seeing observation j (col) from state i (row). N is the length of observation space O = [o_1, o_2, …, o_N].

  • pi (Optional[Union[list, np.ndarray]]) – Initial state probabilities array (of size K).

_emission_matrix(obs_seq: Optional[Union[str, numpy.ndarray, list]] = None, states_seq: Optional[Union[str, numpy.ndarray, list]] = None, obs: Optional[Union[str, numpy.ndarray, list]] = None, states: Optional[Union[str, numpy.ndarray, list]] = None)numpy.ndarray

Calculate an emission probability matrix.

Parameters
  • obs_seq (str or array_like) – Sequence of observations (of size N). Observation space = [o_1, o_2, …, o_N].

  • states_seq (str or array_like) – Sequence of states (of size K). State space = [s_1, s_2, …, s_K].

Returns

ep – Emission probability matrix of size K × N.

Return type

numpy.ndarray

_transition_matrix(seq: Optional[Union[str, numpy.ndarray, list]] = None, states: Optional[Union[str, numpy.ndarray, list]] = None)

Calculate a transition probability matrix which stores transition probability of transiting from state i to state j.

Parameters
  • seq (Optional[Union[str, numpy.ndarray, list]]) – Sequence of states.

  • states (Optional[Union[str, numpy.ndarray, list]]) – List of unique states.

Returns

matrix – Transition frequency matrix.

Return type

numpy.ndarray

from_baum_welch(obs_seq: Union[str, list, numpy.ndarray], states: Optional[Union[list, numpy.ndarray]] = None, thres: Optional[float] = 0.001, obs: Optional[Union[str, numpy.ndarray, list]] = None, tp: Optional[numpy.ndarray] = None, ep: Optional[numpy.ndarray] = None, pi: Optional[Union[list, numpy.ndarray]] = None)object

Baum-Welch algorithm.

Parameters
  • obs_seq (Union[str, list, numpy.ndarray]) – Sequence of observations.

  • states (Optional[Union[list, numpy.ndarray]]) – List of states (of size K).

  • thres (Optional[float]) – Convergence threshold. Kullback-Leibler divergence value below which model training is stopped.

  • obs (Optional[Union[list, numpy.ndarray]]) – Observations space (of size N).

  • tp (Optional[numpy.ndarray]) – Transition matrix (of size K × K) which stores transition probability of transiting from state i (row) to state j (col).

  • ep (Optional[numpy.ndarray]) – Emission matrix (of size K × N) which stores probability of seeing observation j (col) from state i (row). N is the length of observation space, O = {o_1, o_2, …, o_N}.

  • pi (Optional[Union[list, numpy.ndarray]]) – Initial probabilities array (of size K).

Returns

Hidden Markov model trained using Baum-Welch algorithm.

Return type

HiddenMarkovModel

from_seq(obs_seq: Union[str, list, numpy.ndarray], states_seq: Union[str, list, numpy.ndarray], pi: Optional[Union[str, numpy.ndarray, list]] = None, end: Optional[Union[str, numpy.ndarray, list]] = None, seed: Optional[int] = None)object

Analyze sequences of observations and states.

Parameters
  • obs_seq (Union[str, list, numpy.ndarray]) – Sequence of observations (of size N). Observation space, O = [o_1, o_2, …, o_N].

  • states_seq (Union[str, list, numpy.ndarray]) – Sequence of states (of size K). State space = [s_1, s_2, …, s_K].

  • pi (Optional[Union[str, list, numpy.ndarray]]) – Initial state probabilities array (of size K). If None, array is sampled from a uniform distribution.

  • end (Optional[Union[str, list, numpy.ndarray]]) – Initial state probabilities array (of size K). If None, array is sampled from a uniform distribution.

  • seed (Optional[int]) – Random state used to draw random variates. Passed to scipy.stats.uniform method.

Returns

model – Hidden Markov model learned from the given data.

Return type

HiddenMarkovModel

graph_make(*args, **kwargs)graphviz.dot.Digraph

Make a directed graph of a Hidden Markov model using graphviz.

Parameters
  • args (optional) – Arguments passed to the underlying graphviz.Digraph method.

  • kwargs (optional) – Keyword arguments passed to the underlying graphviz.Digraph method.

Returns

graph – Digraph object with its own methods.

Return type

graphviz.dot.Digraph

Note

graphviz.dot.Digraph.render method should be used to output a file.

viterbi(obs_seq: Union[str, list, numpy.ndarray], obs: Optional[Union[list, numpy.ndarray]] = None, states: Optional[Union[list, numpy.ndarray]] = None, tp: Optional[numpy.ndarray] = None, ep: Optional[numpy.ndarray] = None, pi: Optional[Union[list, numpy.ndarray]] = None)Tuple[numpy.ndarray, numpy.ndarray]

Viterbi algorithm.

Parameters
  • obs_seq (Union[str, list, np.ndarray]) – Sequence of observations.

  • obs (Optional[Union[list, np.ndarray]]) – Observations space (of size N).

  • states (Optional[Union[list, np.ndarray]]) – List of states (of size K).

  • tp (Optional[numpy.ndarray]) – Transition matrix (of size K × K) which stores transition probability of transiting from state i (row) to state j (col).

  • ep (Optional[numpy.ndarray]) – Emission matrix (of size K × N) which stores probability of seeing observation j (col) from state i (row). N is the length of observation space, O = [o_1, o_2, …, o_N].

  • pi (Optional[Union[list, np.ndarray]]) – Initial probabilities array (of size K).

Returns

  • x (numpy.ndarray) – Sequence of states.

  • z (numpy.ndarray) – Sequence of state indices.