Смесь HMMlearn Gaussian: установите среднее значение, вес и дисперсию каждого компонента смеси

Я использую модуль HMMlearn для генерации HMM с гауссовой моделью смеси.

Проблема в том, что я хочу инициализировать среднее значение, дисперсию и вес каждого компонента смеси, прежде чем подгонять модель к любым данным.

Как бы я поступил так?

1 ответ

Решение

Из документации HHMlean

Каждый параметр HMM имеет код символа, который можно использовать для настройки его инициализации и оценки. Для работы алгоритма EM необходима начальная точка, поэтому перед обучением каждому параметру присваивается случайное или вычисляемое значение из данных. Можно подключиться к этому процессу и явно указать отправную точку. Сделать так

  1. убедитесь, что код символа для параметра отсутствует в init_params, а затем
  2. установите параметр на желаемое значение.

Вот пример:

model = hmm.GaussianHMM(n_components=3, n_iter=100, init_params="t")
model.startprob_ = np.array([0.6, 0.3, 0.1])
model.means_ = np.array([[0.0, 0.0], [3.0, -3.0], [5.0, 10.0]])
model.covars_ = np.tile(np.identity(2), (3, 1, 1))

Еще один пример для инициализации GMMHMM

model = hmm.GMMHMM(n_components=3, n_iter=100, init_params="smt")
model.gmms_ = [sklearn.mixture.GMM(),sklearn.mixture.GMM(),sklearn.mixture.GMM()]

Сами GMM могут быть инициализированы очень похожим образом, используя его атрибуты и предоставляя в init_params строка, атрибуты которой должны быть инициализированы конструктором.

Другие вопросы по тегам