Параметр params в hmmlearn GMMHMM не работает должным образом - PullRequest
0 голосов
/ 01 мая 2020

У меня есть одномерные (однокомпонентные) данные, которым я хочу соответствовать GMMHMM. Есть два скрытых состояния, и я знаю распределение вероятностей выхода из каждого из состояний. То есть я знаю предварительное распределение и, следовательно, параметры GMM. Поэтому я не хочу, чтобы объект hmmlearn обновлял означает , ковари , весов ГММ.

Я хочу выполнить sh, используя params и init_params , установив их для обновления только startprob и transmat .

Но hmmlearn заканчивает тем, что обновляет , что означает , covars , weights . Как мне остановить их обновление и заставить их обновлять только startprob и transmat ?

Вот мой код

# Initialize the GMMHMM

means_prior = known_means
covars_prior = known_covars
weights_prior = known_weights

gmm_hmm = hmm.GMMHMM(n_components=n_comps, n_mix=n_mix, weights_prior=weights_prior,
                    means_prior=means_prior, covars_prior=covars_prior,
                     covariance_type='spherical', params='st', init_params='st')
gmm_hmm.means_ = means_prior
gmm_hmm.weights_ = weights_prior
gmm_hmm.covars_ = covars_prior

print('Before fitting...')
print('means')
print(gmm_hmm.means_)
print('weights')
print(gmm_hmm.weights_)
print('covars')
print(gmm_hmm.covars_)

# Fit the GMMHMM to the input sequence
gmm_hmm.fit(input_sequence)

print('After fitting...')
print('means')
print(gmm_hmm.means_)
print('weights')
print(gmm_hmm.weights_)
print('covars')
print(gmm_hmm.covars_)

Вы можете обратите внимание, что веса и ковары изменились, хотя означает, что остался прежним.

Before fitting...
means
[[[51.30211436]
  [53.32515359]]

 [[63.47895865]
  [57.19121711]]]
weights
[[0.58624271 0.41375729]
 [0.48605807 0.51394193]]
covars
[[ 0.6483754   1.2042972 ]
 [13.85258908  1.04639497]]

After fitting...
means
[[[51.16975532]
  [54.19504787]]

 [[65.82853658]
  [54.25868767]]]
weights
[[0.88971249 0.11028751]
 [0.30707459 0.69292541]]
covars
[[ 0.56903044  0.70862057]
 [14.77828965  0.56072741]]

Большое спасибо за помощь!

Документация GMMHMM

init_params: Управляет тем, какие параметры инициализируются до начала обучения. Может содержать любую комбинацию 's' для startprob, 't' для transmat, 'm' для средних значений, 'c' для коваров и 'w' для весов смешивания GMM. По умолчанию все параметры.

params: Управляет тем, какие параметры обновляются в процессе обучения. Может содержать любую комбинацию 's' для startprob, 't' для transmat, 'm' для средних и 'c' для коварий и 'w' для весов смешивания GMM. По умолчанию все параметры.

...