Я не знаю, опоздал ли мой ответ, но может помочь.
Как указано в их документации
Матрица вероятности перехода не обязательно должна быть эргоди c. Например, левый-правый HMM может быть определен следующим образом:
lr = hmm.GaussianHMM(n_components=3, covariance_type="diag",
init_params="cm", params="cmt")
lr.startprob_ = np.array([1.0, 0.0, 0.0])
lr.transmat_ = np.array([[0.5, 0.5, 0.0],
[0.0, 0.5, 0.5],
[0.0, 0.0, 1.0]])
Здесь вы заставили модель выучить параметры. Cmt обозначает ковариантность, среднее значение и матрицу перехода, поэтому startprob никогда не изменится. но вы информируете (передавая init_params), что он просто инициализирует ко-дисперсию и средние значения, так что ваши значения, которые вы задаете в startprob и transmat_, будут зафиксированы. хак здесь любой 0 здесь не будет обучаться и всегда будет 0 в обновлениях, поэтому вы заставляете топологию быть ltr.
ковариация полная или diag вообще не связана с топологией. это связано со знанием ваших возможностей. в Diag для примера вы говорите, что все функции полностью независимы, поэтому они имеют 0-дисперсию