Las mejores bibliotecas de Machine Learning en Python

    Introducción

    No hay duda de que las redes neuronales, y el Machine Learning en general, ha sido uno de los temas más candentes en tecnología durante los últimos años. Es fácil ver por qué con todos los casos de uso realmente interesantes que resuelven, como el reconocimiento de voz, el reconocimiento de imágenes o incluso composición musical. Entonces, para este artículo, decidí compilar una lista de algunas de las mejores bibliotecas de Machine Learning de Python y las publiqué a continuación.

    En mi opinión, Python es uno de los mejores lenguajes que puede utilizar para aprender (e implementar) técnicas de Machine Learning por algunas razones:

    • Es simple: Python se está convirtiendo en el lenguaje elegido por los nuevos programadores gracias a su sintaxis simple y su enorme comunidad.
    • Es poderoso: El hecho de que algo sea simple no significa que no sea capaz. Python es también uno de los lenguajes más populares entre los científicos de datos y los programadores web. Su comunidad ha creado bibliotecas para hacer casi cualquier cosa que desee, incluido el Machine Learning.
    • Muchas bibliotecas de ML: Hay toneladas de bibliotecas de Machine Learning ya escritas para Python. Puede elegir una de las cientos de bibliotecas en función de su caso de uso, habilidad y necesidad de personalización.

    El último punto aquí es posiblemente el más importante. Los algoritmos que impulsan el Machine Learning son bastante complejos e incluyen muchas matemáticas, por lo que escribirlos usted mismo (y hacerlo bien) sería la tarea más difícil. Por suerte para nosotros, hay muchas personas inteligentes y dedicadas que han hecho este arduo trabajo por nosotros para que podamos concentrarnos en la aplicación en cuestión.

    De ninguna manera es esta una lista exhaustiva. Hay mucho código por ahí y solo estoy publicando algunas de las bibliotecas más relevantes o conocidas aquí. Ahora, pasemos a la lista.

    Te puede interesar:Variables locales y globales en Python

    Las bibliotecas más populares

    He incluido una breve descripción de algunas de las bibliotecas más populares y para qué sirven, con una lista más completa de proyectos notables en la siguiente sección.

    TensorFlow

    Esta es la biblioteca de redes neuronales más nueva de la lista. Recientemente lanzado en los últimos días, TensorFlow es una biblioteca de redes neuronales de alto nivel que lo ayuda a programar sus arquitecturas de red mientras evita los detalles de bajo nivel. La atención se centra más en permitirle expresar su cálculo como un gráfico de flujo de datos, que es mucho más adecuado para resolver problemas complejos.

    Está escrito principalmente en C ++, que incluye los enlaces de Python, por lo que no tiene que preocuparse por sacrificar el rendimiento. Una de mis características favoritas es la arquitectura flexible, que le permite implementarlo en una o más CPU o GPU en un escritorio, servidor o dispositivo móvil, todos con la misma API. No muchas bibliotecas, si es que hay alguna, pueden hacer esa afirmación.

    Fue desarrollado para el Google Brain proyecto y ahora lo utilizan cientos de ingenieros en toda la empresa, por lo que no hay duda de si es capaz de crear soluciones interesantes.

    Te puede interesar:Single Page Apps con Vue.js y Flask: Autenticación JWT

    Sin embargo, como cualquier biblioteca, probablemente tendrá que dedicar algo de tiempo para aprender su API, pero el tiempo invertido debería valer la pena. En los primeros minutos de jugar con las funciones principales, ya podía decir que TensorFlow me permitiría dedicar más tiempo a implementar mis diseños de red y no luchar a través de la API.

    Si desea obtener más información sobre TensorFlow y las redes neuronales, intente realizar un curso como Aprendizaje profundo con TensorFlow, que no solo le enseñará sobre TensorFlow, sino también sobre las muchas técnicas de aprendizaje profundo.

     

    scikit-learn

    La biblioteca scikit-learn es definitivamente una de las bibliotecas ML más populares, si no la más, entre todos los idiomas (en el momento de escribir este artículo). Tiene una gran cantidad de funciones para la minería de datos y el análisis de datos, lo que la convierte en la mejor opción para investigadores y desarrolladores por igual.

    Te puede interesar:Revisión del curso: Bootcamp completo de Python: pasa de cero a héroe en Python 3

    Está construido sobre las populares bibliotecas NumPy, SciPy y matplotlib, por lo que resultará familiar para muchas personas que ya usan estas bibliotecas. Aunque, en comparación con muchas de las otras bibliotecas que se enumeran a continuación, esta tiene un nivel un poco más bajo y tiende a actuar como base para muchas otras implementaciones de ML.

    Dado lo poderosa que es esta biblioteca, puede ser difícil comenzar a utilizarla a menos que tenga un buen recurso. Uno de los recursos más populares que he visto es Bootcamp de Python para ciencia de datos y Machine Learning, que hace un buen trabajo al explicar cómo implementar muchos métodos ML en scikit-learn.

    Theano

    Theano es una biblioteca de Machine Learning que le permite definir, optimizar y evaluar expresiones matemáticas que involucran matrices multidimensionales, lo que puede ser un punto de frustración para algunos desarrolladores en otras bibliotecas. Al igual que scikit-learn, Theano también se integra estrechamente con NumPy. El uso transparente de la GPU hace que Theano sea rápido y fácil de configurar, lo cual es bastante crucial para aquellos que recién comienzan. Aunque algunos lo han descrito más como una herramienta de investigación que como un uso de producción, utilícelo en consecuencia.

    Una de sus mejores características es una excelente documentación y toneladas de tutoriales. Gracias a la popularidad de la biblioteca, no tendrá muchos problemas para encontrar recursos que le muestren cómo poner sus modelos en funcionamiento.

    Te puede interesar:Programación de trabajos con python-crontab

    Pylearn2

    La mayor parte de la funcionalidad de Pylearn2 está construida sobre Theano, por lo que tiene una base bastante sólida.

    Según el sitio web de Pylearn2:

    Pylearn2 se diferencia de scikit-learn en que Pylearn2 tiene como objetivo proporcionar una gran flexibilidad y hacer posible que un investigador haga casi cualquier cosa, mientras que scikit-learn apunta a funcionar como una «caja negra» que puede producir buenos resultados incluso si el usuario no lo hace comprender la implementación.

    Tenga en cuenta que, a veces, Pylearn2 puede incluir otras bibliotecas, como scikit-learn, cuando tiene sentido hacerlo, por lo que aquí no obtendrá un código 100% personalizado. Sin embargo, esto es genial, ya que la mayoría de los errores ya se han resuelto. Wrappers como Pylearn2 ocupan un lugar muy importante en esta lista.

    Te puede interesar:Guardar texto, JSON y CSV en un archivo en Python

    Pyevolve

    Una de las áreas más interesantes y diferentes de la investigación de redes neuronales es el espacio de los algoritmos genéticos. Un algoritmo genético es básicamente una heurística de búsqueda que imita el proceso de selección natural. Básicamente, prueba una red neuronal en algunos datos y obtiene comentarios sobre el rendimiento de la red a partir de una función de aptitud. Luego, realiza de forma iterativa cambios pequeños y aleatorios en la red y procede a probarla nuevamente con los mismos datos. Las redes con puntajes de aptitud más altos ganan y luego se utilizan como padres de las nuevas generaciones.

    Pyevolve proporciona un excelente marco para construir y ejecutar este tipo de algoritmo. Aunque el autor ha declarado que a partir de la versión v0.6 el marco también es compatible con la programación genética, por lo que en el futuro cercano el marco se inclinará más hacia un marco de Computación Evolutiva que un simple marco GA.

    • Bueno para: redes neuronales con algoritmos genéticos
    • Github

    NuPIC

    NuPIC es otra biblioteca que le proporciona una funcionalidad diferente a sus algoritmos ML estándar. Se basa en una teoría de la neocorteza llamada Memoria Temporal Jerárquica (HTM). Los HTM pueden verse como un tipo de red neuronal, pero parte de la teoría es un poco diferente.

    Básicamente, los HTM son un sistema de memoria jerárquico basado en el tiempo que se puede entrenar con varios datos. Está destinado a ser un nuevo marco computacional que imita cómo la memoria y la computación se entrelazan dentro de nuestro cerebro. Para obtener una explicación completa de la teoría y sus aplicaciones, consulte el papel blanco.

    Te puede interesar:Python asíncrono para el desarrollo web

    Patrón

    Esta es más una biblioteca de ‘suite completa’, ya que proporciona no solo algunos algoritmos de ML sino también herramientas para ayudarlo a recopilar y analizar datos. La parte de minería de datos le ayuda a recopilar datos de servicios web como Google, Twitter y Wikipedia. También tiene un rastreador web y un analizador HTML DOM. Lo bueno de incluir estas herramientas es lo fácil que resulta recopilar y entrenar datos en el mismo programa.

    Aquí hay un gran ejemplo de la documentación que usa un montón de tweets para entrenar a un clasificador sobre si un tweet es un ‘ganador’ o ‘un fracaso’:

    from pattern.web import Twitter
    from pattern.en import tag
    from pattern.vector import KNN, count
    
    twitter, knn = Twitter(), KNN()
    
    for i in range(1, 3):
        for tweet in twitter.search('#win OR #fail', start=i, count=100):
            s = tweet.text.lower()
            p = '#win' in s and 'WIN' or 'FAIL'
            v = tag(s)
            v = [word for word, pos in v if pos == 'JJ'] # JJ = adjective
            v = count(v) # {'sweet': 1}
            if v:
                knn.train(v, type=p)
    
    print knn.classify('sweet potato burger')
    print knn.classify('stupid autocorrect')
    

    Los tweets se recopilan primero usando twitter.search() a través de los hashtags ‘#win’ y ‘#fail’. Luego, se entrena a un vecino k más cercano (KNN) usando adjetivos extraídos de los tweets. Después de suficiente entrenamiento, tienes un clasificador. Nada mal por solo 15 líneas de código.

    • Bueno para: PNL, agrupación y clasificación
    • Github

    Caffe

    Caffe es una biblioteca para el Machine Learning en aplicaciones de visión. Puede usarlo para crear redes neuronales profundas que reconozcan objetos en imágenes o incluso para reconocer un estilo visual.

    Te puede interesar:Clasificación de imágenes con aprendizaje de transferencia y PyTorch

    Se ofrece una integración perfecta con el entrenamiento de GPU, que es muy recomendable para cuando estás entrenando con imágenes. Aunque esta biblioteca parece ser principalmente para académicos e investigación, también debería tener muchos usos para modelos de entrenamiento para uso de producción.

    • Bueno para: redes neuronales / aprendizaje profundo para la visión
    • Sitio web
    • Github

    Otras bibliotecas notables

    Y aquí hay una lista de bastantes otras bibliotecas de Python ML disponibles. Algunos de ellos brindan la misma funcionalidad que los anteriores, y otros tienen objetivos más limitados o están más destinados a ser utilizados como herramientas de aprendizaje.

    Nilearn

    • Construido sobre scikit-learn
    • Github

    Statsmodels

    PyBrain (inactivo)

    Combustible

    Beto

    skdata

    MILK

    IEPY

    Quepy

    Hebel

    mlxtend

    no learn

    Rampa

    Forja característica

    REPS

    Python-ELM

    PythonXY

    XCS

    PyML

    MLPY (inactivo)

    Orange

    Monte

    PYMVPA

    MDP (inactivo)

    Shogun

    PyMC

    Gensim

    Neurolab

    FFnet (inactivo)

    LibSVM

    Spear Mint

    Chainer

    topik

    Crab

    CoverTree

    breze

    Deap

    neurolab

    yahmm

    pydeep

    Annoy

    neon

    Sentiment

     

    Rate this post