Guía de uso de la biblioteca de PyCaret-low code ML

En este artículo, demostraré cómo usar PyCaret para construir rápida y fácilmente un proyecto de aprendizaje automático y preparar el modelo final para la implementación.

Cuando estudiamos problemas de aprendizaje automático supervisado, si estamos satisfechos con los resultados, es fácil ver cómo funciona el bosque aleatorio o el modelo de aumento de gradiente y detiene el experimento. ¿Qué pasaría si pudiera comparar muchos modelos diferentes con una sola línea de código? ¿Y si pudiera reducir cada paso del proceso de ciencia de datos (desde la ingeniería funcional hasta la implementación del modelo) a solo unas pocas líneas de código?

Guía de uso de la biblioteca de ML PyCaret-low-code Guía de uso de la biblioteca de ML PyCaret-low-code
Aquí es donde entra en juego PyCaret. PyCaret es una biblioteca de Python de alto nivel y código bajo que facilita la comparación, el entrenamiento, la evaluación, el ajuste y la implementación de modelos de aprendizaje automático con solo unas pocas líneas de código. En esencia, PyCaret es básicamente un gran paquete de muchas bibliotecas de ciencia de datos como Scikit-learn, Yellowbrick, SHAP, Optuna y Spacy. Sí, puede usar estas bibliotecas para la misma tarea, pero si no desea escribir mucho código, PyCaret puede ahorrar mucho tiempo.

En este artículo, demostraré cómo usar PyCaret para construir rápida y fácilmente un proyecto de aprendizaje automático y preparar el modelo final para la implementación.

Instalar PyCaret

PyCaret es una gran biblioteca con muchas dependencias. Recomiendo usar Conda para crear un entorno virtual para PyCaret para que la instalación no afecte a ninguna de sus bibliotecas existentes. Para crear y activar un entorno virtual en Conda, ejecute los siguientes comandos :

conda create --name pycaret_env python=3.6 
conda activate pycaret_env 

Para instalar la versión más pequeña predeterminada de PyCaret con solo las dependencias requeridas, puede ejecutar el siguiente comando .

pip install pycaret 

Para instalar la versión completa de PyCaret, debe ejecutar el siguiente comando.

pip install pycaret[full] 

Una vez que PyCaret esté instalado, desactive el entorno virtual y agréguelo a Jupyter usando el siguiente comando.

conda deactivate 
python -m ipykernel install --user --name pycaret_env --display-name "pycaret_env" 

Ahora, después de iniciar Jupyter Notebook en su navegador, debería poder ver la opción para cambiar el entorno a la opción que acaba de crear.
Guía de uso de la biblioteca de ML PyCaret-low-code Guía de uso de la biblioteca de ML PyCaret-low-code
> Cambio del entorno virtual de Conda en Jupyter.

Importar biblioteca

Puede encontrar el código completo para este artículo en este repositorio de GitHub. En el siguiente código, solo importé Numpy y Pandas para procesar los datos de esta demostración.

import numpy as np 
import pandas as pd 

Leer datos

Para este ejemplo, utilicé el conjunto de datos "Precios de la vivienda de California" disponible en Kaggle. En el siguiente código, leo este conjunto de datos en un marco de datos y muestro las primeras diez filas del marco de datos.

housing_data = pd.read_csv('./data/housing.csv')housing_data.head(10) 

Guía de uso de la biblioteca de ML PyCaret-low-code Guía de uso de la biblioteca de ML PyCaret-low-code
> Primeras diez filas del conjunto de datos de vivienda.

La salida anterior nos da una idea de cómo se ven los datos. Los datos contienen principalmente características digitales y una característica de clasificación para la proximidad de cada casa al océano. La columna de destino que estamos tratando de predecir es la columna "valor_casa_medio". El conjunto de datos completo contiene un total de 20,640 observaciones.

Inicializa el experimento

Ahora que tenemos los datos, podemos iniciar un experimento de PyCaret que preprocesará los datos y habilitará el registro para todos los modelos que se entrenarán en este conjunto de datos.

from pycaret.regression import * 
reg_experiment = setup(housing_data,  
                       target = 'median_house_value',  
                       session_id=123,  
                       log_experiment=True,  
                       experiment_name='ca_housing') 

Como se muestra en el GIF a continuación, ejecutar el código anterior preprocesará los datos y luego generará un marco de datos con opciones experimentales.
Guía de uso de la biblioteca de ML PyCaret-low-code Guía de uso de la biblioteca de ML PyCaret-low-code
> Salida de la función de configuración de Pycaret.

Modelo de referencia

Podemos comparar inmediatamente diferentes modelos de línea de base para encontrar el modelo con el mejor rendimiento de validación cruzada de K-fold utilizando la función compare_models, como se muestra en el código a continuación. En el siguiente ejemplo, he excluido XGBoost con fines de demostración.

best_model = compare_models(exclude=['xgboost'], fold=5) 

Guía de uso de la biblioteca de ML PyCaret-low-code Guía de uso de la biblioteca de ML PyCaret-low-code
> Resultados de comparar diferentes modelos.

Esta función generará un marco de datos que contiene las estadísticas de desempeño de cada modelo y resaltará los indicadores del modelo de mejor desempeño, en este caso el regresor CatBoost.

Modelado

También podemos usar PyCaret para entrenar el modelo en una sola línea de código. La función create_model solo necesita una cadena correspondiente al tipo de modelo que desea entrenar. Puede encontrar una lista completa de cadenas aceptables para esta función y el modelo de regresión correspondiente en la página de documentación de PyCaret.

catboost = create_model('catboost') 

Guía de uso de la biblioteca de ML PyCaret-low-code Guía de uso de la biblioteca de ML PyCaret-low-code
La función create_model usa el índice de validación cruzada del modelo CatBoost entrenado para generar el marco de datos anterior.

Ajuste de hiperparámetros

Ahora que tenemos un modelo bien entrenado, podemos optimizarlo aún más mediante ajustes de hiperparámetros. Con solo una línea de código, podemos ajustar los hiperparámetros del modelo como se muestra a continuación.

tuned_catboost = tune_model(catboost, n_iter=50, optimize = 'MAE') 

Guía de uso de la biblioteca de ML PyCaret-low-code Guía de uso de la biblioteca de ML PyCaret-low-code
> Resultados del ajuste de hiperparámetros con validación cruzada de 10 veces.

Los resultados más importantes (en este caso el indicador de promedio) se resaltan en amarillo.

Visualice el rendimiento del modelo.

Podemos usar PyCaret para crear muchos gráficos para visualizar el rendimiento del modelo. PyCaret usa otra biblioteca de alto nivel llamada Yellowbrick para construir estos archivos de visualización.

Mapa residual

De forma predeterminada, la función plot_model generará una gráfica residual para el modelo de regresión, como se muestra a continuación.

plot_model(tuned_catboost) 

Guía de uso de la biblioteca de ML PyCaret-low-code Guía de uso de la biblioteca de ML PyCaret-low-code
> Gráfico residual para el modelo CatBoost ajustado.

Error de predicción

Al crear un mapa de errores de predicción, también podemos visualizar el valor predicho en relación con el valor objetivo real.

plot_model(tuned_catboost, plot = 'error') 

Guía de uso de la biblioteca de ML PyCaret-low-code Guía de uso de la biblioteca de ML PyCaret-low-code
> Gráfico de error de predicción para el regresor CatBoost sintonizado.

El diagrama anterior es particularmente útil porque nos proporciona una representación intuitiva del coeficiente R² del modelo CatBoost. En una situación ideal (R² = 1), cuando el valor predicho coincide exactamente con el valor objetivo real, el gráfico solo contendrá puntos a lo largo de la línea de puntos.

Importancia funcional

También podemos visualizar la importancia funcional del modelo como se muestra a continuación.

plot_model(tuned_catboost, plot = 'feature') 

Guía de uso de la biblioteca de ML PyCaret-low-code Guía de uso de la biblioteca de ML PyCaret-low-code
> Gráfico de importancia de características para el regresor CatBoost.

Como puede verse en la figura anterior, la mediana del número de dígitos es la característica más importante a la hora de predecir los precios de la vivienda. Dado que esta característica corresponde a la renta mediana del área donde se construye la casa, esta valoración es muy razonable. Las casas construidas en áreas de altos ingresos pueden ser más caras que las casas en áreas de bajos ingresos.

Utilice todas las gráficas para evaluar el modelo

También podemos crear múltiples gráficos para evaluar el modelo usando la función validate_model.

evaluate_model(tuned_catboost) 

 
> La interfaz creada usando la función evalu_modelo.

Modelo explicativo

La función interpret_model es una herramienta útil para interpretar las predicciones del modelo. Esta función utiliza una biblioteca de aprendizaje automático interpretable llamada SHAP, que presento en el siguiente artículo.

Con solo una línea de código, podemos crear un diagrama de colonia SHAPE para el modelo.

interpret_model(tuned_catboost) 

Guía de uso de la biblioteca de ML PyCaret-low-code Guía de uso de la biblioteca de ML PyCaret-low-code
> Gráfico SHAP producido al llamar a la función interpret_model.

De acuerdo con la figura anterior, podemos ver que el campo de ingresos medios tiene el mayor impacto en el valor de la vivienda pronosticado.

Aprendizaje automático automático

PyCaret también tiene la función de ejecutar el aprendizaje automático automático (AutoML). Podemos especificar la función de pérdida o métrica que queremos optimizar y luego dejar que la biblioteca se haga cargo como se muestra a continuación.

automlautoml_model = automl(optimize = 'MAE') 

En este ejemplo, el modelo de AutoML también es una variable de regresión de CatBoost, y podemos confirmarlo imprimiendo el modelo.

print(automl_model) 

Ejecutar la declaración de impresión anterior producirá el siguiente resultado:

< catboost.core.CatBoostRegressor at 0x7f9f05f4aad0 >

Genera predicciones

La función de modelo de pronóstico nos permite generar pronósticos utilizando datos de experimentos o nuevos datos invisibles.

pred_holdouts = predict_model(automl_model) 
pred_holdouts.head() 

La función predict_model anterior genera predicciones para el conjunto de datos mantenido utilizado para verificar el modelo durante la validación cruzada. El código también nos proporciona un marco de datos que contiene estadísticas de rendimiento para las predicciones generadas por el modelo de AutoML.
Guía de uso de la biblioteca de ML PyCaret-low-code Guía de uso de la biblioteca de ML PyCaret-low-code
> Predicciones generadas por el modelo AutoML.

En el resultado anterior, la columna "etiqueta" representa las predicciones generadas por el modelo de AutoML. También podemos hacer predicciones sobre todo el conjunto de datos, como se muestra en el siguiente código.

new_data = housing_data.copy() 
new_data.drop(['median_house_value'], axis=1, inplace=True) 
predictions = predict_model(automl_model, data=new_data) 
predictions.head() 

Guardar el modelo

PyCaret también nos permite guardar el modelo entrenado usando la función save_model. Esta función guarda la canalización de conversión del modelo en el archivo pickle.

save_model(automl_model, model_name='automl-model') 

También podemos usar la función load_model para cargar el modelo AutoML guardado.

loaded_model = load_model('automl-model') 
print(loaded_model) 

La impresión del modelo cargado producirá el siguiente resultado:

Pipeline(memory=None, 
         steps=[('dtypes', 
                 DataTypes_Auto_infer(categorical_features=[], 
                                      display_types=True, features_todrop=[], 
                                      id_columns=[], ml_usecase='regression', 
                                      numerical_features=[], 
                                      target='median_house_value', 
                                      time_features=[])), 
                ('imputer', 
                 Simple_Imputer(categorical_strategy='not_available', 
                                fill_value_categorical=None, 
                                fill_value_numerical=None, 
                                numer... 
                ('cluster_all', 'passthrough'), 
                ('dummy', Dummify(target='median_house_value')), 
                ('fix_perfect', Remove_100(target='median_house_value')), 
                ('clean_names', Clean_Colum_Names()), 
                ('feature_select', 'passthrough'), ('fix_multi', 'passthrough'), 
                ('dfs', 'passthrough'), ('pca', 'passthrough'), 
                ['trained_model', 
                 ]], 
         verbose=False) 

Como puede ver en el resultado anterior, PyCaret no solo guarda el modelo entrenado al final de la canalización, sino que también guarda la ingeniería de características y los pasos de preprocesamiento de datos al comienzo de la canalización. Ahora que tenemos una canalización de aprendizaje automático lista para producción en un archivo, no tenemos que preocuparnos por unir las distintas partes de la canalización.

Despliegue del modelo

Ahora que hemos preparado una canalización de modelos que se puede producir, también podemos usar la función deploy_model para implementar el modelo en una plataforma en la nube como AWS. Si planea implementar el modelo en un bucket de S3, debe ejecutar el siguiente comando para configurar la interfaz de línea de comandos de AWS antes de ejecutar esta función:

aws configure 

La ejecución del código anterior activará una serie de mensajes que le solicitarán que proporcione información como la clave de acceso secreta de AWS. Después de completar este proceso, puede usar la función deploy_model para implementar el modelo.

deploy_model(automl_model, model_name = 'automl-model-aws',  
             platform='aws', 
             authentication = {'bucket' : 'pycaret-ca-housing-model'}) 

En el código anterior, implementé el modelo de AutoML en un bucket de S3 llamado pycaret-ca-housing-model en AWS. Desde aquí, puede escribir una función de AWS Lambda que extraiga el modelo de S3 y lo ejecute en la nube. PyCaret también le permite cargar modelos desde S3 usando la función load_model.

Interfaz de usuario de MLflow

Otra característica interesante de PyCaret es que puede usar una herramienta de ciclo de vida de aprendizaje automático llamada MLfLow para registrar y realizar un seguimiento de sus experimentos de aprendizaje automático. La ejecución del siguiente comando iniciará la interfaz de usuario de MLflow en el navegador desde el host local.

!mlflow ui 

Guía de uso de la biblioteca de ML PyCaret-low-code Guía de uso de la biblioteca de ML PyCaret-low-code
> Panel de MLFlow.

En el panel anterior, podemos ver que MLflow puede rastrear el funcionamiento de diferentes modelos de su experimento PyCaret. Puede ver los indicadores de rendimiento y el tiempo de ejecución de cada ejecución del experimento.

Pros y contras de usar PyCaret

Si ha leído este libro, ahora tiene un conocimiento básico de cómo usar PyCaret. Aunque PyCaret es una gran herramienta, tiene sus propias ventajas y desventajas, y debe tenerlo en cuenta si planea usarlo para proyectos de ciencia de datos.

ventaja:

Base de código bajo.
Muy adecuado para tareas estándar simples y aprendizaje automático general.
Brinde soporte para regresión, clasificación, procesamiento de lenguaje natural, agrupamiento, detección de anomalías y minería de reglas de asociación.
Facilite la creación y el almacenamiento del complejo proceso de conversión del modelo.
Facilite la visualización del rendimiento del modelo.

Desventajas:

Hasta ahora, dado que las utilidades de NLP se limitan a algoritmos de modelado de temas, PyCaret no es ideal para la clasificación de texto.
PyCaret no es ideal para el aprendizaje profundo y no utiliza modelos de Keras o PyTorch.
No puede realizar tareas de aprendizaje automático más complejas, como usar PyCaret (al menos en la versión 2.2.0) para la clasificación de imágenes y la generación de texto.
Al usar PyCaret, sacrificará el control del código simple y avanzado hasta cierto punto.

Generalizar

En este artículo, demostré cómo usar PyCaret para completar todos los pasos en un proyecto de aprendizaje automático, desde el preprocesamiento de datos hasta la implementación del modelo. Aunque PyCaret es una herramienta útil, si planea usarlo para un proyecto de ciencia de datos, debe comprender sus pros y sus contras. PyCaret es muy adecuado para el aprendizaje automático general utilizando datos tabulares, pero a partir de la versión 2.2.0, PyCaret no es adecuado para tareas más complejas de procesamiento de lenguaje natural, aprendizaje profundo y visión por computadora. Pero esta sigue siendo una herramienta que ahorra tiempo, quién sabe, tal vez los desarrolladores agreguen soporte para tareas más complejas en el futuro.

Como se mencionó anteriormente, puede encontrar el código completo de este artículo en GitHub. https://github.com/AmolMavuduru/PyCaretTutorial

Supongo que te gusta

Origin blog.csdn.net/yaxuan88521/article/details/115046773
Recomendado
Clasificación