Скрытый марковский модельный питон

1

У меня есть временной ряд положения частицы во времени, и я хочу оценить параметры модели двух HMM, используя эти данные (один для оси x, другой для оси y). Я использую библиотеку hmmlearn, однако мне непонятно, как мне обращаться. В учебнике указано, что это третий способ использования библиотеки, однако, когда я использую код ниже:

remodel = hmm.GaussianHMM(n_components=3, covariance_type="full", n_iter=100)
remodel.fit(X)  
Z2 = remodel.predict(X) 

и X - это список значений оси x, он возвращает

ValueError: Expected 2D array, got 1D array instead

Что следует добавить к моим данным, чтобы превратить его в 2D?

Теги:
machine-learning
hmmlearn

1 ответ

0

Caveat emptor: Мое понимание HMM и этой библиотеки основано на нескольких минутах от Google и Википедии. Это сказало:

Для обучения модели HMM вам нужно несколько выборок, каждый из которых является вектором функций. Например, в примере Википедии Алисы, прогнозирующем погоду в доме Боба, основываясь на том, что он делал каждый день, Алиса получает несколько образцов (что Боб говорит ей каждый день), каждый из которых имеет одну функцию (Боб сообщил о деятельности в тот день). Было бы вполне возможно, чтобы Боб дал Алисе несколько функций за данный день (что он сделал и каково было его наряд, например).

Чтобы узнать/установить модель HMM, вам понадобится серия образцов, каждый из которых является вектором функций. Вот почему функция fit ожидает двумерный вход. Из документов, как ожидается, X будет "подобен массиву, форма (n_samples, n_features) ". В вашем случае позиция частицы является единственной особенностью, причем каждое наблюдение является образцом. Таким образом, ваш ввод должен быть массивом типа n_samples, 1 (один столбец). Прямо сейчас он предположительно имеет форму 1, n_samples (одна строка, по умолчанию - что-то вроде np.array([1, 2, 3])). Так что просто измените форму:

remodel.fit(X.reshape(-1, 1))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню