54 votos

Aprendizaje automático con Python

Estoy considerando utilizar bibliotecas de Python para hacer mis experimentos de Aprendizaje Automático. Hasta ahora, he estado confiando en WEKA, pero he estado bastante insatisfecho en general. Esto es principalmente porque he encontrado que WEKA no está bien soportado (muy pocos ejemplos, la documentación es escasa y el apoyo de la comunidad es menos que deseable en mi experiencia), y me he encontrado en situaciones difíciles sin ayuda. Otra razón por la que estoy contemplando este movimiento es porque me está gustando mucho Python (soy nuevo en Python), y no quiero volver a codificar en Java.

Así que mi pregunta es, ¿cuáles son las

  1. completo
  2. escalable (100k características, 10k ejemplos) y
  3. ¿hay bibliotecas bien soportadas para hacer ML en Python?

Estoy especialmente interesado en la clasificación de textos, por lo que me gustaría utilizar una biblioteca que tenga una buena colección de clasificadores, métodos de selección de características (Information Gain, Chi-Sqaured, etc.) y capacidades de preprocesamiento de texto (stemming, eliminación de palabras clave, tf-idf, etc.).

Basándome en los hilos de correo electrónico anteriores aquí y en otros lugares, he estado mirando PyML, scikits-learn y Orange hasta ahora. Cómo han sido las experiencias de la gente con respecto a las 3 métricas mencionadas anteriormente que menciono?

¿Alguna otra sugerencia?

40voto

On Freund Puntos 3479

Sobre la opción scikit-learn: 100k características (dispersas) y 10k muestras es razonablemente pequeño para caber en la memoria, por lo tanto, perfectamente realizable con scikit-learn (el mismo tamaño que el conjunto de datos de 20 grupos de noticias).

Aquí tienes un tutorial que impartí en la PyCon 2011 con un capítulo sobre clasificación de textos con ejercicios y soluciones:

También di una charla sobre el tema que es una versión actualizada de la que di en la PyCon FR. Aquí están las diapositivas (y el video incrustado en los comentarios):

En cuanto a la selección de características, echa un vistazo a esta respuesta en quora donde todos los ejemplos se basan en la documentación de scikit-learn:

Todavía no tenemos extracción de características de colocación en scikit-learn. Utilice nltk y nltk-trainer para hacerlo mientras tanto:

14voto

Shawn Puntos 8120

En cuanto al trabajo con texto, echa un vistazo a NLTK. Está muy bien soportado y documentado (incluso hay un libro en línea, o en papel si lo prefieres) y hará el preprocesamiento que necesitas. También puede ser útil Gensim; el énfasis está en el modelado de espacio vectorial y tiene implementaciones escalables de LSI y LDA (creo que también pLSI) si son de interés. También hace selección por tf-idf - no estoy seguro de que NLTK lo haga. He utilizado piezas de estos en corpus de ~50k sin mucha dificultad.

NLTK: http://www.nltk.org/

Gensim: http://nlp.fi.muni.cz/projekty/gensim/

Desgraciadamente, en cuanto a la idea principal de tu pregunta, no estoy familiarizado con las bibliotecas específicas a las que haces referencia (aunque ya he utilizado partes de scikits-learn).

8voto

Omar Shahine Puntos 886

Permítanme sugerir Naranja

completo

escalable (100k características, 10k ejemplos)

¿hay bibliotecas bien soportadas para hacer ML en Python?

biblioteca que tiene una buena colección de clasificadores, métodos de selección de características (Information Gain, Chi-Sqaured, etc.),

Todos ellos funcionan de forma inmediata en Orange

y capacidades de preprocesamiento de texto (stemming, eliminación de palabras clave, tf-idf, etc.).

Sin embargo, nunca he utilizado Orange para el tratamiento de textos

4voto

MGOwen Puntos 122

No estoy seguro de que esto sea especialmente útil, pero hay una guía para que los programadores aprendan estadística en Python disponible en línea. http://www.greenteapress.com/thinkstats/

Parece bastante bueno desde mi breve exploración, y parece hablar de algunos métodos de aprendizaje automático, por lo que podría ser un buen lugar para empezar.

3voto

Matt Mitchell Puntos 17005

Comprueba libsvm .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X