Modelos ocultos de Markov con algoritmo de Baum-Welch usando Python

11

Estoy buscando alguna implementación de Python (en Python puro o envolviendo cosas existentes) de HMM y Baum-Welch.

¿Algunas ideas?

Acabo de buscar en google y he encontrado material muy pobre con respecto a otras técnicas de aprendizaje automático. ¿Por qué?

nkint
fuente

Respuestas:

11

El scikit-learn tiene una implementación HMM . Hasta hace poco se consideraba no mantenido y se desaconsejaba su uso. Sin embargo, ha mejorado en la versión de desarrollo. Sin embargo, no puedo garantizar su calidad, ya que no sé nada de HMM.

Descargo de responsabilidad: soy un desarrollador de scikit-learn.

Editar : hemos trasladado los HMM fuera de scikit-learn a https://github.com/hmmlearn/hmmlearn

Gael Varoquaux
fuente
Sí, yo decido no lo uso debido unmantainement ..
nkint
Creo que está mejorando y que pronto podremos comprometernos a mantenerlo.
Gael Varoquaux
¿La implementación de sklearn utiliza Baum-Welch?
Vishal
Si lo hace Ver _BaseHMMdocumentación para detalles de implementación.
Sergei Lebedev
3

¿Has visto NLTK?

http://www.nltk.org/

Tiene algunas clases que son adecuadas para este tipo de cosas, pero algo dependientes de la aplicación.

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

Si está buscando algo más "orientado a la educación", escribí hace un momento sobre el entrenador de juguetes:

http://pastebin.com/aJG3Ukmn

qi5d02lx
fuente
Gracias. Lo necesito para el reconocimiento de gestos. Estoy Stucked en lo que podría ser mi alfabeto (símbolos en NLTK) en mi aplicación ..
nkint
ok, los datos son las etiquetas, así que si uso solo 8 etiquetas para agrupar las coordenadas de un gesto ... el alfabeto es [1,2,3,4,5,6,7]
nkint
pero aún no entiendo la diferencia entre estado y símbolo en el constructor
HiddenMarkovModelTrainer
1
Muy bien, ¿qué tal esto: creativedistraction.com/demos/ ... es una demostración paso a paso con el código de cómo construir su propio reconocedor de gestos con el Kinect. El código es para Octave, no para Python, pero parece que estás atascado en las ideas / implementación más que en los detalles del software. por supuesto, requiere un kinect ... también puede consultar esto: code.google.com/p/ehci
qi5d02lx
0

La siguiente es una implementación de Pyhton del algoritmo Baum-Welch:

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

Hamza Rawal
fuente