En este artículo haremos un repaso por 10 librerías Python de uso diario en proyectos de Data Science y Aprendizaje Automático. Entre las tareas que realizamos como Científico de Datos o como Ingenieros en Machine Learning, debemos hacer análisis exploratorio de datos, limpieza, preprocesado, modelado, ingeniería de características, selección del mejor modelo, entrenamiento, validación y test, implementación del servicio. Para todas estas tareas contamos con paquetes de software que nos facilitan conseguir nuestros objetivos.

Las 10 librerías Python seleccionadas son:

  1. Pandas
  2. Numpy
  3. Plotly
  4. Scikit-learn
  5. Category-encoders
  6. Imbalance Learning
  7. LightGBM / XGBoost
  8. Keras / Tensorflow
  9. Shap
  10. AzureML-sdk

Hay muchísimas otras librerías Python de interés, que hoy no comentaremos en este artículo, pero les dejo un listado por si quieren curiosear:

Otras librerías Python de interés

  1. Scipy
  2. joblib
  3. Matplotlib / Plotly / Seaborn
  4. Eli5
  5. Statsmodels
  6. Runipy / IPython
  7. Xlsxwriter
  8. Tqdm
  9. Sphinx
  10. Pytest
  11. Dask
  12. Pytorch
  13. Bokeh
  14. NLTK
  15. SpaCy
  16. Gensim
  17. Pattern
  18. Scrapy
  19. BeautifulSoap
  20. Selenium
  21. Django
  22. Flask
  23. Arrow (para fechas)
  24. Parsedatetime
  25. Scikit-image

And the winner is...

Centrémonos en nuestras 10 elegidas.

Veamos una breve descripción a cada una:

LibreríaSirve para…
PandasManipulación de Datos, limpieza
NumpyManejo de vectores, matrices y operaciones matemáticas a gran velocidad.
PlotlyGenerar Visualizaciones interactivas
Scikit-learnPreprocesado de datos, selección de modelos, modelos de Machine Learning, métricas
Category EncodersPonderación y transformación de datos categóricos a continuos para utilizar en ML
Imbalance LearningPermite equilibrar muestras de datos con diversas estratégias, cuando las clases están muy desbalanceadas.
LightGBM y XGBoostSon dos de los modelos de árboles de ML más poderosos y rápidos.
Keras / TensorflowKeras nos permite la creación de Redes Neuronales sobre Tensorflow a un alto nivel, facilitando la tarea y su mantenimiento.
ShapInterpretación de Modelos
AzureML SDKNos permite utilizar la potencia de Azure para entrenar modelos, reutilizarlos y hacer su despliegue en servidores de producción.

 

Y ahora, comentaremos una a una.

1-Pandas, manejo de datos

https://pandas.pydata.org/

blog_pandas python ML

Pandas es hoy en día una de las librerías más usadas en Data Science pues nos facilita mucho el manejo de datos. Con ella podemos leer archivos ó bases de datos de múltiples fuentes (csv, sqlite, sqlserver, html) y hacer operaciones entre las columnas, ordenar, agrupar, dividir, pivotar, totalizar. Nos ayuda a detectar valores nulos, detectar ouliers, duplicados y también hacer merge ó joins entre distintos orígenes. También nos permite guardar fácilmente nuestro nuevo dataset.

2-Numpy, operar matrices

https://numpy.org/

blog_numpy Python Machine Learning

Numpy es un estándar en Python y de hecho es utilizada como base por Pandas y por muchas otras librerías que se apoyan en ella para operar.

Numpy nos permite crear todo tipo de estructuras numéricas, múltiples dimensiones, permite transformarlas, operar aritméticamente, filtrar y es útil muchas veces para la inicialización de datos aleatorios.

3-Plotly, imagen y clic

https://plotly.com/python/

10 Librerías Python para Data Science y Machine Learning

Al realizar gráficas y visualización de los datos, muchas veces al momento de realizar el Análisis exploratorio ó al estudiar los resultados obtenidos solemos utilizar el standard Matplotlib.pyplot que realmente es muy buena librería. Sin embargo, echamos de menos no poder “pasar el cursor” por encima de la gráfica e interactuar. También está Seaborn que embellece y expande mucho el alcance de Matplot. Pero nos quedamos con Plotly que con relativamente poco esfuerzo nos regala gráficas cliqueables, que nos aportan mayor información y nos ayudan en nuestra labor diaria.

4-Scikit Learn, Machine Learning en tu mano

https://scikit-learn.org/

blog_scikit learn Machine Learning

Esta librería creció y creció y cada vez cubre más de nuestras necesidades al momento de preprocesar datos, hacer transformaciones y crear modelos de ML. De hecho, muchas de las nuevas librerías que aparecen siguen sus interfaces para implementar su código. ¿Te suenan los métodos fit(), transform(), predict()? Ó el muy usado train_test_split? Todos vienen de aquí!

Una de las funciones que más me gustan de sklearn, es la de crear Pipelines para las transformaciones y poder reutilizarlos. No hay que perder de vista que para proyectos empresariales los datos que nos llegan “en crudo” deberán ser transformados siempre de la misma manera para alimentar a los modelos de ML.

Por otra parte, sklearn cuenta con implementaciones de los algoritmos <<clásicos>> para clasificación, regresión y clusterización: Regresión Lineal / Logística, Support Vector Machines, K Nearest Neighbors, Procesos Gaussianos, Naive Bayes, Árbol de decisión, PCA, y modelos de Ensamble.

Habría mucho más que decir sobre sklearn, pero por el momento aquí lo dejamos.

 

5-Category Encoders, mejora del dato

https://contrib.scikit-learn.org/category_encoders/

10 Librerías Python para Data Science y Machine Learning

Esta librería es muy útil para intentar dar significado a datos categóricos. Suele ocurrir que entre nuestras variables tenemos valores “A,B,C” ó nombre de zonas, ó diversas categorías “Alto, medio, bajo” que para ser utilizadas en modelos de ML deberemos convertir en valores numéricos. Pero… ¿asignaremos 1,2,3 para “ABC” sin que esto tenga ninguna lógica? ¿ó descartamos esas variables? ¿Valores aleatorios?

Mejor dejarle la tarea a Category Encoders. Nos ofrece diversas transformaciones para dar valor a esas variables categóricas y asignarles un “peso” que pueda aportar valor y significado al momento de entrenar el modelo.

Este paso puede ser tan valioso que podría marcar la diferencia para conseguir unas buenas predicciones.

¿Quieres formarte en Machine Learning?

En Verne TECH venimos trabajando en proyectos de Machine Learning desde hace algunos años y esta experiencia nos ha servido para adaptar nuestro conocimiento y crear los contenidos formativos objeto de este Módulo de Machine Learning con el que adquirir nuevos conceptos y conocimientos relacionados con analítica avanzada, dar el salto para no quedarte en el BI Tradicional” y seguir creciendo como profesional. 

Quiero aprender Machine Learning

6-Imbalance Learning, emparejar los datos

https://imbalanced-learn.org/stable/

blog imbalance learning emparejar datos machine learning

Otro caso que se da con mucha frecuencia al hacer tareas de clasificación es contar con una cantidad desbalanceada de muestras de cada clases. Casos típicos son la detección de alguna enfermedad en donde la mayoría de las muestras son negativas y pocas positivas o en set de datos para detección de fraudes.

Para que un algoritmo supervisado de ML pueda aprender, deberá poder generalizar el conocimiento y para ello, deberá de <<ver>> una cantidad suficiente de muestras de cada clase ó será incapaz de discernir.

Allí aparece esta librería al rescate con diversos algoritmos para el re-muestreo de nuestra información. Con ello podremos disminuir al conjunto mayoritario (sin afectar al resultado del entrenamiento), aumentar al conjunto minoritario (creando muestras artificiales “con sentido”) ó aplicar técnicas  combinadas de oversampling y subsampling a la vez.

7- LightGBM / XGBoost, árboles con potencia

https://lightgbm.readthedocs.io/en/latest/

blog_lightgbm xgboost Machine learning python

Los modelos de sklearn de ML están bien, pero… qué pasa si necesitamos “algo más potente” que un árbol de decisión? pues allí aparecen modelos novedosos como LightGBM ó XGboost.

Utilizan técnicas de “Gradient Boosting” (es decir, optimizar una función objetivo para ponderar el valor de los árboles creados y mejorar así el resultado) pero varían en la manera en que generan los árboles (priorizando niveles ú hojas) y eso afecta a la velocidad de ejecución, aunque son razonablemente rápidas las dos librerías.

LightGBM es mantenida por Microsoft y cuenta con implementaciones para C, Python y R. Puede ejecutar en paralelo y cuenta con soporte a GPU logrando mayores velocidades sobre todo en datasets grandes.

8-Keras / Tensorflow, Deep Learning en pocas líneas

https://keras.io/

10 Librerías Python para Data Science y Machine Learning

¿Y cuando necesitamos más potencia aún? Allí aparece el Deep Learning…

Sus librerías más populares son Tensorflow y PyTorch, son muy buenas, potentes y optimizadas (¿dije Open-Source = gratuito?).

En este caso, me quedo con Keras que es una librería de Alto Nivel para crear y utilizar Redes Neuronales con Tensorflow como backend.

Es decir, que nos ayuda a poder crear nuestros modelos de Redes Neuronales de una manera simple sin tener que programar directamente con Tensorflow.

Con Keras podremos crear redes multicapa, redes convolucionales, Autoencoders, LSTM, RNN y muchas otras arquitecturas en pocas líneas.

9-Shap, Interpretación de modelos

https://github.com/slundberg/shap

10 Librerías Python para Data Science y Machine Learning

Al volverse más complejos los modelos de ML y con la aparición de las redes neuronales profundas, se hizo cada más más difícil, si no imposible poder explicar porqué un modelo de ML estaba pronosticando sus resultados de una manera u otra. Esto se volvió un inconveniente pues… ¿podemos confiar en esos resultados? ¿Cómo saberlo?

Para explicar las predicciones de los modelos de ML aparecieron diversas soluciones, siendo una de las más sorprendentes la que se apoya en la “Teoría de Juegos” e intenta contabilizar cuánto aporta cada variable a la predicción final (Shapley values). Nos permite tener una comprensión Global del modelo pero también local, es decir, de cada predicción.

10- AzureML Sdk, implementación ML en la Nube

https://docs.microsoft.com/en-us/python/api/overview/azure/ml/?view=azure-ml-py

10 Librerías Python para Data Science y Machine Learning

Finalmente presentamos AzureML SDK que nos provee de muchísimas herramientas para trabajar con Data Science y ML, además de permitir implemetar nuestro propio servicio en la nube.

Quería destacar que podemos subir a entrenar nuestros modelos de ML en la nube y aprovechar el paralelismo que nos da su Cluster de Computación -en la nube-. Podemos elegir entre decenas de configuraciones de máquinas con mayor CPU, RAM, GPU y disco.

De esta manera, estaremos ejecutando en muchos nodos a la vez, ahorrando tiempo y dinero (pay-per-use).

Además podemos programarlos y automatizar tareas de extracción de datos, preparación del dataset ó entrenamiento de modelos con la frecuencia que sea de nuestro interés.

Por ejemplo, para un servicio meteorológico podríamos hacer que dispare las predicciones a cada hora y que las escriba en una base de datos, que notifique por email ó que escriba en un archivo de logs.

Estas fueron las 10 mejores librerías Python seleccionadas a principios de 2020, Ya veremos cómo evolucionan y cuales ganarán el podio el año que viene!

¿Quieres poner en marcha tu proyecto de Machine Learning?

Conseguir el éxito en proyectos de analítica avanzada y su monetización requiere de datos, un buen modelo… y su interpretación asociada al caso de negocio. Esta combinación es imprescindible para que el proyecto tenga sentido y sea rentable. Por esta razón, durante nuestro Ideation Workshop nos reunimos en una sesión con todas las partes implicadas de tu equipo, para poner en contexto el proyecto y asegurar tanto su viabilidad técnica como los hitos de negocio en términos de rentabilidad. ¡Infórmate! Mira: Machine Learning Ideation Workshop: ¿Cómo empiezo mi proyecto?

Quiero poner en marcha mi proyecto
0 Shares:
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You May Also Like