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