mchmm.HiddenMarkovModel

class mchmm.HiddenMarkovModel(observations: list | ndarray | None = None, states: list | ndarray | None = None, tp: list | ndarray | None = None, ep: list | ndarray | None = None, pi: list | ndarray | None = None)

Bases: object

__init__(observations: list | ndarray | None = None, states: list | ndarray | None = None, tp: list | ndarray | None = None, ep: list | ndarray | None = None, pi: list | ndarray | None = 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: str | ndarray | list | None = None, states_seq: str | ndarray | list | None = None, obs: str | ndarray | list | None = None, states: str | ndarray | list | None = None) 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: str | ndarray | list | None = None, states: str | ndarray | list | None = 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: str | list | ndarray, states: list | ndarray | None = None, thres: float | None = 0.001, obs: str | ndarray | list | None = None, tp: ndarray | None = None, ep: ndarray | None = None, pi: list | ndarray | None = 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: str | list | ndarray, states_seq: str | list | ndarray, pi: str | ndarray | list | None = None, end: str | ndarray | list | None = None, seed: int | None = 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) 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: str | list | ndarray, obs: list | ndarray | None = None, states: list | ndarray | None = None, tp: ndarray | None = None, ep: ndarray | None = None, pi: list | ndarray | None = None) Tuple[ndarray, 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.