PYTHON AVANZADO
15 Librerías de Python para Machine Learning
Estas son las 15 mejores librerías de python para Machine Learning. Temas: Visualización, Cálculo Numérico, Análisis de Datos, Aprendizaje Automático, Deep Learning, Inteligencia Artificial Explicable, Procesamiento del Lenguaje Natural y mucho más.
Todas las librerías de python que vamos a ver son gratuitas.
Índice
Librerías de Python para Visualización
Una de las fases del proceso de Machine Learning más importantes es entender el problema que vamos a resolver. Una forma que tenemos de mejorar nuestra comprensión del problema es entender mejor los datos. La visualización de datos nos ayuda a entender mejor tanto los datos y como el problema.
Así mismo, la visualización de datos será también muy útil para comprender los resultados y analizar los errores. Aunque hay muchas librerías en python para la visualización de datos, nos vamos a concentrar en: matplotlib, seaborn y bokeh por el momento.
Matplotlib
Matplotlib es la librería gráfica de python estándar y la más conocida. Puedes usar matplotlib para generar gráficos de calidad necesaria para publicarlas tanto en papel como digitalmente.
Con matplotlib puedes crear muchos tipos de gráficos: series temporales, histogramas, espectros de potencia, diagramas de barras, diagramas de errores, etc.
Si quieres ver de lo que matplotlib es capaz, mira sus gráficos de ejemplo y su galería de gráficos.
Seaborn
Seaborn es una librería gráfica basada en matplotlib, especializada en la visualización de datos estadísticos. Se caracteriza por ofrecer un interfaz de alto nivel para crear gráficos estadísticos visualmente atractivos e informativos.
Seaborn considera la visualización como un aspecto fundamental a la hora de explorar y entender los datos. Se integra muy bien con la librería de manipulación de datos pandas.
Si quieres ver de lo que seaborn es capaz, mira su galería de ejemplos. También ofrecen un tutorial en inglés.
Bokeh
Bokeh es una librería para visualizar datos de forma interactiva en un navegador web. Con bokeh podemos crear gráficos versátiles, elegantes e interactivos. Los desarrolladores de bokeh buscan un buen rendimiento con gran cantidad de datos, incluso con datos que vayan llegando en tiempo real.
Si quieres ver de lo que bokeh es capaz, mira su galería de ejemplos. También puedes consultar su manual de usuario en inglés.
Librerías de Python para Cálculo Numérico y Análisis de Datos
Otra de las fases del proceso de Machine Learning que más tiempo consumen es la preparación de datos y el cálculo de atributos relevantes o características (features). NumPy, SciPy y Pandas son las librerías de python ideales para análisis de datos y computación numérica.
Seguramente también nos enfrentaremos a problemas que no requieren el uso de aprendizaje automático sino sólo el análisis de datos. Por supuesto, también podemos usar estas librerías en estos casos.
NumPy
NumPy proporciona una estructura de datos universal que posibilita el análisis de datos y el intercambio de datos entre distintos algoritmos. Las estructuras de datos que implementa son vectores multidimensionales y matrices con capacidad para gran cantidad de datos.
Además, esta librería proporciona funciones matemáticas de alto nivel que operan en estas estructuras de datos. Para aprender más, sigue el tutorial de NumPy (en inglés).
SciPy
SciPy proporciona rutinas numéricas eficientes fáciles de usar y opera en las mismas estructuras de datos proporcionadas por NumPy. Por ejemplo, con SciPy puedes realizar: integración numérica, optimización, interpolación, transformadas de Fourier, álgebra lineal, estadística, etc. Para aprender más, sigue el tutorial de SciPy (en inglés).
Pandas
Pandas es una de las librerías de python más útiles para los científicos de datos. Las estructuras de datos principales en pandas son Series para datos en una dimensión y DataFrame para datos en dos dimensiones.
Estas son las estructuras de datos más usadas en muchos campos tales como finanzas, estadística, ciencias sociales y muchas áreas de ingeniería. Pandas destaca por lo fácil y flexible que hace la manipulación de datos y el análisis de datos.
Para aprender más, puedes mirar la documentación de pandas (en inglés).
Numba
Numba traduce funciones escritas en python to código máquina optimizado a la hora de ejecutarse. Lo consigue usando el estándar industrial LLVM como librería de compilación. Los algoritmos numéricos compilados con Numba pueden alcanzar velocidades de ejecución tan altas como las de C o FORTRAN.
Así que si te interesa optimizar la velocidad de tu código, no tienes por qué compilar código por separado, ni tan siquiera necesitas tener el compilador de C/C++ instalado. Sólo aplica uno de los decoradores de Numba a tu función de python y Numba hará el resto.
Para saber más, puedes consultar la documentación de Numba (en inglés)
Librerías de Python para Machine Learning
Cuando vimos las fases del proceso de Machine Learning, vimos que construir el modelo de Machine Learning consumía relativamente poco tiempo. Esto es así porque ya existen librerías de aprendizaje automático. Hay varias, Scikit-Learn es la más utilizada.
scikit-learn
scikit-learn es una librería de python para Machine Learning y Análisis de Datos. Está basada en NumPy, SciPy y Matplotlib. La ventajas principales de scikit-learn son su facilidad de uso y la gran cantidad de técnicas de aprendizaje automático que implementa.
Con scikit-learn podemos realizar aprendizaje supervisado y no supervisado. Podemos usarlo para resolver problemas tanto de clasificación y como de regresión.
Es muy fácil de usar porque tiene una interfaz simple y muy consistente. El interfaz es muy fácil de aprender. Te das cuenta que el interfaz es consistente cuando puedes cambiar de técnica de machine learning cambiando sólo una línea de código.
Otro punto a favor de scikit-learn es que los valores de los hiper-parámetros tienen unos valores por defecto adecuados para la mayoría de los casos.
Estas son algunas de las técnicas de aprendizaje automático que podemos usar con scikit-learn:
- regresión lineal y polinómica
- regresión logística
- máquinas de vectores de soporte
- árboles de decisión
- bosques aleatorios (random forests)
- agrupamiento (clustering)
- modelos basados en instancias
- clasificadores bayesianos
- reducción de dimensionalidad
- detección de anomalías
- etc.
Para aprender más, puedes mirar la documentación de scikit-learn (en inglés).
Librerías de Python para Deep Learning
Aunque el Deep Learning se engloba dentro del Machine Learning, he puesto las librerías de python para aprendizaje profundo al mismo nivel. La razón es que últimamente, el deep learning es el mayor responsable de la reciente popularidad del machine learning.
TensorFlow
TensorFlow es una librería de python, desarrollada por Google, para realizar cálculos numéricos mediante diagramas de flujo de datos. Esto puede chocar un poco al principio, porque en vez de codificar un programa, codificaremos un grafo. Los nodos de este grafo serán operaciones matemáticas y las aristas representan los tensores (matrices de datos multidimensionales).
Con esta computación basada en grafos, TensorFlow puede usarse para deep learning y otras aplicaciones de cálculo científico.
Si te estás preguntando por qué necesitamos diseñar un grafo en vez de un programa, es por la flexibilidad de ejecución que TensorFlow permite. Por ejemplo, el grafo que representa la red neuronal profunda y sus datos, se podrá ejecutar en una o varias CPU o GPU en un PC, en un servidor o en un móvil.
Para aprender más, puedes mirar el tutorial de TensorFlow (en inglés).
Keras
Keras es un interfaz de alto nivel para trabajar con redes neuronales. El interfaz de Keras es mucho más fácil de usar que el de TensorFlow. Esta facilidad de uso es su principal característica.
Con Keras es muy fácil comprobar si nuestras ideas tendrán buenos resultados rápidamente. Keras utiliza otras librerías de deep learning (TensorFlow, CNTK o Theano) de forma transparente para hacer el trabajo que le digamos.
Para aprender más, puedes mirar la documentación de Keras (en inglés).
PyTorch
PyTorch es una librería de python, desarrollada por Facebook, que permite el cálculo numérico eficiente en CPU y GPUs.
Puedes pensar en PyTorch como una librería que te la las capacidades de NumPy en una GPU. En otras palabras, si tu tarjeta gráfica tiene un procesador gráfico (por ejemplo, una NVIDIA moderna), tu código se puede ejecutar unas ¡10 – 20 veces más rápido!
El aprendizaje profundo (deep learning) usa cálculos matriciales y de derivadas masivos y paralelizables en GPUs. Por eso, PyTorch también se especializa en deep learning.
Para aprender más, puedes mirar los tutoriales de PyTorch y su documentación (ambos en inglés).
Librerías de Python para IA explicable
SHAP
SHAP es una librería para realizar Inteligencia Artificial Explicable (XAI por sus siglas in inglés eXplainable Artificial Intelligence). Utiliza cálculos del campo de la teoría de juegos para averiguar qué variables tienen más influencia en las predicciones de las técnicas de machine learning.
SHAP permite entender cómo se toman las decisiones en modelos de caja negra (random forest o redes neuronales). Puedes obtener explicaciones tanto para predicciones individuales como de forma global. Su API es bastante fácil de usar.
Librerías de Python para Procesamiento de Lenguaje Natural
Algunas de las librerías que hemos visto se pueden usar también para algunas de las fases del procesamiento del lenguaje natural. Por ejemplo, scikit-learn puede usarse para calcular frecuencias normalizadas de los términos que aparece en documentos.
Las librerías de deep learning y scikit-learn también permiten construir modelos de machine learning con datos de texto, una vez estos se hayan convertido a un formato estándar.
En este apartado, vamos a ver las librerías que están principalmente dedicadas al procesamiento del lenguaje natural.
NLTK: Natural Language Toolkit
NLTK es una de las librerías más antiguas en python para procesamiento de lenguaje natural. Sigue siendo muy útil para tareas de preprocesado de texto tales como la tokenización, lematización, exclusión de palabras irrelevantes, etc. NLTK también se usa mucho como herramienta de estudio y enseñanza de procesamiento del lenguaje.
Para aprender más, puedes leer el libro de NLTK (en inglés).
gensim
gensim es una librería para el procesamiento de lenguaje natural creada por Radim Řehůřek. El punto fuerte de Gensim es el modelado de temas. Es decir, puede identificar automáticamente de que tratan un conjunto de documentos.
Además, Gensim es útil para construir o importar representaciones de vectores distribuidas tales como word2vec. También podemos usar Gensim para analizar la similaridad entre documentos, lo que es muy útil cuando realizamos búsquedas.
Para aprender más, mira los tutoriales de Gensim (en inglés).
spaCy
spaCy es la librería de procesamiento natural más rápida que existe. Está diseñada para usarse en aplicaciones reales y extraer información relevante. spaCy también es muy útil para preparar texto para otras tareas de aprendizaje automático. Por ejemplo, podemos preparar los datos para usarlos con TensorFlow, PyTorch, scikit-learn, Gensim, etc.
Con spaCy también vamos a poder construir modelos lingüísticos estadísticos sofisticados para muchos de los problemas de procesamiento de lenguaje natural.
Para saber más, mira la documentación de spaCy (en inglés).
Jupyter Notebook
Jupyter Notebook es una aplicación web para crear documentos que contienen código, ecuaciones, visualizaciones y texto. Puedes usar Jupyter notebooks para limpiar datos, transformarlos, realizar simulaciones numéricas, modelos estadísticos, visualizaciones de datos, machine learning y mucho más.
A efectos prácticos es como una consola interactiva de python en un navegador que permite la ejecución de código python, visualización de datos y gráficos, y documentar lo que estés haciendo.
Jupyter no es en realidad una librería de python. Sin embargo, ya que estamos viendo cuáles son las herramientas que más usa un científico de datos, la lista no estaría ni mucho menos completa sin Jupyter. Utilizo Jupyter constantemente para probar ideas y construir prototipos simples. No lo recomiendo cuando el código sea más complejo o cuando queramos crear librerías con nuestro trabajo para reutilizarlo en otros proyectos.
Anaconda
Anaconda es una distribución de python para Cálculo Numérico, Análisis de Datos y Machine Learning. Contiene las librerías más usadas por los científicos de datos. Además hace muy fácil la instalación de otras librerías que puedas necesitar.
Con Anaconda también es posible crear varios entornos de trabajo si estás trabajando en varios proyectos . Esto puede ser útil, por ejemplo, si uno de los proyectos necesita python 3 y el otro python 2. O si estás trabajando en un proyecto que necesita unas librerías específicas o que tengan una versión específica.
A no ser que tengas que trabajar con aplicaciones antiguas, te recomiendo que utilices la distribución de Anaconda con Python 3. Ve a la sección de descargas para conseguirla. Para más información, puedes seguir la documentación de Anaconda.
Resumen
Hemos visto las mejores librerías de python para:
- visualización
- cálculo numérico
- análisis de datos
- manipulación de datos
- machine learning
- deep learning
- inteligencia artificial explicable
- procesamiento de lenguaje natural.
Jupyter Notebook no es una librería, pero un entorno web que va a facilitarnos mucho la vida. Con Jupyter podemos probar nuestras ideas y ver los resultados de forma muy intuitiva, a la vez que lo documentamos.
Finalmente, la forma más fácil de instalar todas estas librerías es instalar Anaconda. Anaconda va a instalar muchas de estas librerías. El resto, podrás instalarlas manualmente cuando las necesites.
Esta lista de librerías no tiene por objetivo ser completa, si no sólo indicar cuáles librerías de Machine Learning son más útiles … por lo menos para mí. Si tu librería favorita no está en la lista, te invito a que la pongas en los comentarios.
Comentarios
Publicar un comentario