TodoBI - Business Intelligence, Big Data, ML y AI TodoBI - Business Intelligence, Big Data, ML y AI

PyCaret, paso a paso

PyCaret es una librería low-code de machine learning open-source en Python que automatiza los workflows de Machine Learning.

1. Introducción

El propósito de este documento es investigar casos de uso de la librería de Python PyCaret. Además se pondrá un ejemplo de estos y se dará una opinión al respecto del framework en cuestión.

2. PyCaret

PyCaret es una librería de Python que permite llevar a cabo desde la preparación de los datos, hasta el despliegue del modelo final en tan solo unos minutos. Esta librería es compatible con cualquier tipo de notebook de Python, y además nos permite realizar comparaciones de varios modelos automáticamente.

A modo de ejemplo vamos a crear un Jupyter Notebook que sea capaz, en tan solo unas líneas, de leer los datos, procesarlos obteniendo un ranking de modelos de ML, entrenar el modelo más potente y desplegarlo para obtener predicciones sobre datos.

Primero vamos a instalar PyCaret en nuestro entorno de Python, para ello ejecutamos el siguiente comando en una terminal:

‘pip install pycaret’

Paso seguido abrimos un notebook de Jupyter y hacemos los siguientes imports:

Utilizaremos un conjunto de datos proporcionado por PyCaret llamado ‘credit’, para importarlo corremos el siguiente código:

Vemos como disponemos de 24000 filas con 24 columnas cada una:

Ahora vamos a particionar el conjunto de datos, obteniendo el 95% para entrenar el modelo:

El 5% restante lo vamos a utilizar para comprobar el rendimiento del modelo sobre datos nunca antes vistos:

Como podemos ver, tenemos varios predictores que se utilizarán para predecir la variable binaria ‘default’.

Lo último que haremos para limpiar los datos es resetear los índices de cada subconjunto de datos:

Ahora vamos a comparar el rendimiento de distintos modelos. Para ello debemos, en primer lugar, importar:

Paso seguido definimos el entorno de PyCaret con los datos de entrenamiento, esto hará que cada vez que llamemos a un modelo a entrenar se escojan dichos datos para entrenar. Además este proceso también preprocesa los datos automáticamente de manera que sea más fácil aplicar los modelos estadísticos:

Vemos como la ejecución de esta consulta es interactiva, pues espera que comprobemos que los tipos de datos inferidos automáticamente sean los correctos, en tal caso pulsamos enter. Entonces se nos mostrarán los cambios realizados a los datos de entrenamiento que hemos realizado

Podemos ver los modelos de clasificación de que dispone PyCaret, mediante el siguiente comando:

Este output es importante puesto que se necesitan los id de cada modelo para trabajar con ellos más en específico, como veremos a continuación.

Una de las funciones más útiles de esta librería nos permite comparar todos los modelos anteriores, esta función es la siguiente:

Mediante esta tabla podemos escoger el modelo que más nos convenga, teniendo en cuenta las diferentes puntuaciones sobre las métricas que se muestran.

En nuestro caso, por ejemplo vamos a construir y entrenar un random forest sobre los datos de entrenamiento. Para ello ejecutamos:

Podemos ver como ha entrenado 10 modelos distintos, para poder obtener los detalles de este modelo en media y, así, poder extrapolar los resultados en mayor detalle. También se pueden ver los hiperparámetros con los que el modelo ha sido entrenado.

Para mejorar este modelo, es decir, obtener los hiperparámetros óptimos o que más se aproximan a estos, podemos correr la siguiente función, que entrena 10 modelos distintos 10 veces cada uno, y devuelve el que mejor precisión media obtenga:

Podemos ver como algunos hiperparámetros se han modificado, de manera que obtenemos una mayor precisión media.

Una vez se ha entrenado el modelo específico, si estamos interesados en saber cómo se comporta, se puede por ejemplo estudiar su tasa de verdaderos positivos y falsos positivos, con el gráfico de curvas ROC:

Igual de interesante es el gráfico de importancia de variables, para poder obtener conclusiones sobre las variables que más afectan a nuestra variable objetivo:

Llegados a este punto, podemos obtener predicciones sobre el conjunto de datos test, que no ha sido utilizado para entrenar el modelo:

Como podemos ver, se crean dos columnas nuevas. Label hace referencia a la predicción realizada mientras que Score es la probabilidad asociada a la predicción.

Por último, para terminar de configurar nuestro modelo random forest, debemos finalizar el modelo, es decir, se va a entrenar con todo el conjunto de datos del que se dispone:

De esta manera, el modelo está listo para su puesta en producción, por tanto podemos guardarlo localmente mediante:

Al igual que cargarlo posteriormente, de tal manera que el modelo está preparado para utilizarse y predecir al momento:

Con el PyCaret explainer Dashboard, como nueva funcionalidad, permite una visualización mucho más potente

3. Conclusión

Como hemos podido comprobar, PyCaret proporciona un entorno de trabajo hábil y potente que facilita la obtención de un buen modelo predictivo, así como una buena configuración de éste.

Además, se pueden guardar los modelos entrenados con todo el conjunto de datos y hacer uso de ellos en cualquier momento, sin la necesidad de volver a entrenarlos.

Como es habitual en este tipo de herramientas, el ajuste de un modelo más complejo para abordar grandes problemas de predicción se debe hacer con herramientas como sklearn o tensorflow, aunque esto no quita que PyCaret nos sirva para elegir rápidamente un modelo que, a priori, ajusta bien los datos.

De igual manera, se puede utilizar para obtener ideas sobre qué parámetros ajustar en un modelo específico que se esté desarrollando manualmente.

Important Links
 TutorialsNew to PyCaret? Checkout our official notebooks!
📋 Example NotebooksExample notebooks created by community.
📙 Official BlogTutorials and articles by contributors.
📚 DocumentationThe detailed API docs of PyCaret
📺 Video TutorialsOur video tutorial from various events.
✈️ Cheat sheetCheat sheet for all functions across modules.
📢 DiscussionsHave questions? Engage with community and contributors.
🛠️ ChangelogChanges and version history.
🌳 RoadmapPyCaret's software and community development plan.

Te puede interesar:

Power BI embebido en Jupyter Notebook
1. INTRODUCCIÓNEl propósito de este documento es investigar sobre el funcionamiento y los casos de uso de embeber informes de Power BI en Jupyter Notebook. Se comenzará por instalar la librería powerbiclient, seguirá con la configuración de la conexión al cloud de Power BI y la importación de inform…
Jump, nuevo lenguaje de modelización open source para Machine Learning
Jump es un lenguaje de modelización de código abierto que permite a los usuarios expresar una amplia gama de problemas de optimización (lineales, mixtos-integrales, cuadráticos, cónicos-cuadráticos, semidefinidos y no lineal) en una sintaxis algebraica de alto nivel. Jump aprovecha las característic…
Conociendo VerticaPy (framework de Python sobre la BD analítica Vertica)
1. INTRODUCCIÓNEl propósito de este documento es mostrar varios casos de uso del framework de Python Verticapy sobre la BD analítica Vertica. Se van a tratar los aspectos generales que conciernen al uso de esta librería, comentando los aspectos positivos y negativos. Se mostrarán los casos de uso qu…
Videotutorial: Trabajando con Python en Power BI
Después de haber creado bastantes videotutoriales sobre Power BI nos veníais solicitando uno que mostrara el potencial de Power BI con Python, pues aquí lo tenéis: Más Videotutoriales y Manuales sobre Power BI:ALM Toolkit para PowerBITabular Editor con PowerBIPowerBI Embeded – Buenas PrácticasPower…
Machine Learning en Power BI usando PyCaret open source
Os presentamos PyCaret, una biblioteca de Machine Learning de código abierto en Python que entrena y despliega modelos de Machine Learning en un entorno de código bajo. En comparación con las otras bibliotecas de Machine Learning de código abierto, PyCaret es una biblioteca alternativa de bajo códi…
Free Machine Learning Tutorial – All the Essential Concepts in Single Tutorial
Tutorial de aprendizaje de Machine Learning para principiantes. Como es un tutorial de iniciación es bastante sencillo, pero también completo. Ver Tutorial ¿Alguna vez has ido a hacer la compra? ¿Qué haces antes de ir al mercado? Siempre preparo una lista de ingredientes de antemano. Además, tomo la…
Que algoritmo de Machine Learning elegir para cada problema?
Dado que existen muchos algoritmos, como hemos venido contando ultimamente , os vamos a dar unas pistas para ayudaros:  1. Cuando usar Machine Learning Lo primero que tenemos que tener en cuenta es que, aunque hablar y usar Machine Learning es una tendencia y es ‘cool’, debemos ser consci…
Alternativas para crear Dashboards con Python
En la mayoría de ocasiones, después de hacer un cálculo, queremos mostrar de forma sencilla algún resultado de tal forma que cualquiera lo pueda visualizar. Sin embargo, a veces el resultado no es algo sencillo y queremos proporcionar herramientas para que otros puedan “juguetear” los datos y que v…