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:
- 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:
- 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.