Я делаю распознавание жестов в python, и одна из наиболее полных библиотек, которая может управлять скрытой моделью Маркова, - это nltk . Но есть кое-что, чего я не могу понять.
Прежде всего, данные. У меня есть координаты жеста, и я сгруппировал их в 8 кластеров (с помощью k-средних). так что это моя структура жестов:
raw coordinates x,y: [[123,16], [120,16], [115,16], [111,16], [107,16], [103,17], ...]
centroids x,y : [[ 132.375 56.625 ]
[ 122.45454545 30.09090909]
[ 70.5 27.33333333]
...]
labels: [5 6 6 6 6 6 6 2 2 2 2 2 2 4 4 4 ...]
Теперь я хочу тренировать HMM с Баумом-Уэлчем с моим. Так что HiddenMarkovModelTrainer - это мой класс.
Я нашел в интернете еще несколько реализаций baum welch, но только в Matlab. Реализация этого алгоритма, как правило, требует ввода:
baum-welch(X, alphabet, H)
где
- X это данные для поезда (в моем случае - метки)
- алфавит возможных значений данных (в моем случае - 0,1,2,3,4,5,6,7)
- H количество скрытых состояний
Теперь я запутался, потому что в конструкторе ntlk.HiddenMarkovModelTrainer мне нужно дать состояний и символов , и я не знаю, какими они должны быть, учитывая, что данные для обучения X является следствием метода HiddenMarkovModelTrainer.train_unsupervised (), я считаю, что мой алфавит является символом ... я не знаю, что помещать в состояния.
Надеюсь, мои объяснения понятны, даже если мой английский плохой.