У меня есть одномерные (однокомпонентные) данные, которым я хочу соответствовать 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. По умолчанию все параметры.