Modelos ocultos de Markov com o algoritmo Baum-Welch usando python

11

Estou procurando alguma implementação python (em python puro ou empacotando materiais existentes) do HMM e Baum-Welch.

Algumas ideias?

Acabei de pesquisar no google e encontrei material muito ruim em relação a outras técnicas de aprendizado de máquina. Por quê?

nkint
fonte

Respostas:

11

O scikit-learn possui uma implementação do HMM . Até recentemente, era considerado não mantido e seu uso era desencorajado. No entanto, ele melhorou na versão de desenvolvimento. Não posso garantir sua qualidade, pois não conheço nada dos HMMs.

Disclaimer: Eu sou um desenvolvedor de scikit-learn.

Edit : movemos os HMMs para fora do scikit-learn, para https://github.com/hmmlearn/hmmlearn

Gael Varoquaux
fonte
sim eu decidir não usá-lo por causa de unmantainement ..
nkint
Eu acho que está melhorando e que em breve poderemos nos comprometer a mantê-lo.
Gael Varoquaux 11/03/12
a implementação do sklearn usa Baum-Welch?
Vishal
Sim. Consulte a _BaseHMMdocumentação para obter detalhes da implementação.
Sergei Lebedev 01/03
3

Você já viu o NLTK?

http://www.nltk.org/

Tem algumas classes que são adequadas para esse tipo de coisa, mas um pouco dependentes do aplicativo.

http://www.nltk.org/api/nltk.tag.html#nltk.tag.hmm.HiddenMarkovModelTrainer

Se você está procurando algo mais "orientado para a educação", escrevi um treinador de brinquedos há um tempo:

http://pastebin.com/aJG3Ukmn

qi5d02lx
fonte
obrigado. Eu preciso disso para reconhecimento de gestos. eu estou encravada no que poderia ser o meu alfabeto (símbolos em nltk) em minha aplicação ..
nkint
ok, os dados são os rótulos, por isso, se eu usar apenas 8 rótulos para agrupar as coordenadas de um gesto .. o alfabeto é [1,2,3,4,5,6,7]
nkint
mas ainda não entendo a diferença entre estado e símbolo no construtor
HiddenMarkovModelTrainer
1
tudo bem, que tal isso: creativedistraction.com/demos/… é uma demonstração passo a passo com o código de como criar seu próprio reconhecedor de gestos com o kinect. O código é para Octave, não para python, mas parece que você está preso às idéias / implementação mais do que às particularidades do software. é claro que requer um kinect ... você também pode verificar isso: code.google.com/p/ehci
qi5d02lx
0

A seguir, é apresentada uma implementação em Pyhton do algoritmo Baum-Welch:

https://github.com/hamzarawal/HMM-Baum-Welch-Algorithm

Hamza Rawal
fonte