Desplegando tu primer modelo de aprendizaje automático

Dominando tu primer modelo de aprendizaje automático

 

Introducción

 

En este tutorial, aprenderemos cómo construir un modelo de clasificación múltiple simple utilizando el conjunto de datos de Clasificación de Vidrio. Nuestro objetivo es desarrollar y desplegar una aplicación web que pueda predecir varios tipos de vidrio, tales como:

  1. Windows Float Processed
  2. Windows Non-Float Processed
  3. Vehicle Windows Float Processed
  4. Vehicle Windows Non Float Processed (faltante en el conjunto de datos)
  5. Containers
  6. Utensilios de mesa
  7. Faros

Además, aprenderemos sobre:

  • Skops: Comparte tus modelos basados en scikit-learn y ponlos en producción.
  • Gradio: Marco de aplicaciones web de ML.
  • HuggingFace Spaces: plataforma gratuita de alojamiento de modelos y aplicaciones de machine learning.

Al final de este tutorial, tendrás experiencia práctica en la construcción, entrenamiento y despliegue de un modelo básico de machine learning como una aplicación web.

 

Entrenamiento y Guardado del Modelo

 

En esta parte, importaremos el conjunto de datos, lo dividiremos en subconjuntos de entrenamiento y prueba, construiremos el pipeline de machine learning, entrenaremos el modelo, evaluaremos su desempeño y guardaremos el modelo.

 

Conjunto de Datos

 

Hemos cargado el conjunto de datos y luego lo hemos mezclado para una distribución igual de las etiquetas.

import pandas as pdglass_df = pd.read_csv("glass.csv")glass_df = glass_df.sample(frac = 1)glass_df.head(3)

 

Nuestro conjunto de datos Luego, seleccionamos las características y variables objetivo del modelo utilizando el conjunto de datos y los dividimos en conjuntos de entrenamiento y prueba.

from sklearn.model_selection import train_test_splitX = glass_df.drop("Type",axis=1)y = glass_df.TypeX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=125)

 

Pipeline de Machine Learning

 

Nuestro pipeline de modelo es sencillo. Primero, pasamos nuestras características por un imputador y luego las normalizamos usando Standard Scaler. Finalmente, alimentamos los datos procesados en un clasificador de bosque aleatorio.

Después de ajustar el pipeline en el conjunto de entrenamiento, utilizamos `.score()` para generar el puntaje de precisión en el conjunto de prueba.

El puntaje es promedio y estoy satisfecho con el desempeño. Aunque podríamos mejorar el modelo mediante ensembling o utilizando varios métodos de optimización, nuestro objetivo es diferente.

from sklearn.ensemble import RandomForestClassifierfrom sklearn.preprocessing import StandardScalerfrom sklearn.impute import SimpleImputerfrom sklearn.pipeline import Pipelinepipe = Pipeline(    steps=[        ("imputer", SimpleImputer()),        ("scaler", StandardScaler()),        ("model", RandomForestClassifier(n_estimators=100, random_state=125)),    ])pipe.fit(X_train, y_train)pipe.score(X_test, y_test)>>> 0.7538461538461538

 

El informe de clasificación también se ve bien.

from sklearn.metrics import classification_reporty_pred = pipe.predict(X_test)print(classification_report(y_test,y_pred))

 

precision    recall  f1-score   support           1       0.65      0.73      0.69        15           2       0.82      0.79      0.81        29           3       0.40      0.50      0.44         4           5       1.00      0.80      0.89         5           6       1.00      0.67      0.80         3           7       0.78      0.78      0.78         9    accuracy                           0.75        65   macro avg       0.77      0.71      0.73        65weighted avg       0.77      0.75      0.76        65

 

Guardando el modelo

 

Skops es una gran biblioteca para implementar modelos de scikit-learn en productos. Lo usaremos para guardar el modelo y luego cargarlo en producción.

import skops.io as siosio.dump(pipe, "glass_pipeline.skops")

 

Como podemos ver, con una sola línea de código, podemos cargar todo el pipeline. 

sio.load("glass_pipeline.skops", trusted=True)

  

Construyendo una aplicación web

 

En esta parte, aprenderemos cómo usar Gradio para construir una interfaz de usuario de clasificación simple. 

  • Cargar el modelo usando skops.
  • Crear un arreglo de nombres de clases y dejar el primero vacío o “Ninguno” como nuestros iniciadores de clase numéricos a partir de 1. 
  • Escribir una función de clasificación en Python que tome las entradas del usuario y prediga la clase usando el pipeline. 
  • Crear las entradas para cada característica utilizando los deslizadores. Los usuarios pueden usar el ratón para seleccionar los valores numéricos. 
  • Crear la salida utilizando la etiqueta. Mostrará la etiqueta en negrita en la parte superior. 
  • Agregar el título y la descripción de la aplicación. 
  • Finalmente, combinar todo usando ‘gradio.Interface’
import gradio as grimport skops.io as siopipe = sio.load("glass_pipeline.skops", trusted=True)classes = [    "Ninguno",    "Ventanas de construcción procesadas por flotación",    "Ventanas de construcción no procesadas por flotación",    "Ventanas de vehículos procesadas por flotación",    "Ventanas de vehículos no procesadas por flotación",    "Contenedores",    "Utensilios",    "Faros",]def clasificador(RI, Na, Mg, Al, Si, K, Ca, Ba, Fe):    pred_glass = pipe.predict([[RI, Na, Mg, Al, Si, K, Ca, Ba, Fe]])[0]    label = f"Etiqueta de vidrio predicha: **{classes[pred_glass]}**"    return labelinputs = [    gr.Slider(1.51, 1.54, step=0.01, label="Índice de refracción"),    gr.Slider(10, 17, step=1, label="Sodio"),    gr.Slider(0, 4.5, step=0.5, label="Magnesio"),    gr.Slider(0.3, 3.5, step=0.1, label="Aluminio"),    gr.Slider(69.8, 75.4, step=0.1, label="Silicio"),    gr.Slider(0, 6.2, step=0.1, label="Potasio"),    gr.Slider(5.4, 16.19, step=0.1, label="Calcio"),    gr.Slider(0, 3, step=0.1, label="Bario"),    gr.Slider(0, 0.5, step=0.1, label="Hierro"),]outputs = [gr.Label(num_top_classes=7)]title = "Clasificación de vidrio"descripcion = "Ingrese los detalles para identificar correctamente el tipo de vidrio."gr.Interface(    fn=clasificador,    inputs=inputs,    outputs=outputs,    title=title,    description=descripcion,).launch()

 

Implementando el modelo de aprendizaje automático

 

En la parte final, crearemos los espacios en Hugging Face y agregaremos nuestro modelo y el archivo de la aplicación. 

Para crear los espacios, debes iniciar sesión en https://huggingface.co. Luego, haz clic en tu imagen de perfil en la parte superior derecha y selecciona “+ Nuevo espacio”.  

Escribe el nombre de tu aplicación, selecciona SDK y haz clic en el botón Crear espacio.  

Luego, crea un archivo `requirements.txt`. Puedes agregar o crear un archivo yendo a la pestaña “Archivos” y seleccionando el botón “+ Agregar archivo”. 

En el archivo `requirements.txt`, tienes que agregar skops y scikit-learn.

  

Después de eso, añade el modelo y el archivo arrastrándolos desde tu carpeta local hacia el espacio. Después de eso, haz un commit. 

  

Tomará unos minutos para que los espacios instalen los paquetes requeridos y construyan el contenedor. 

 Imagen de Spaces 

Al final, serás recibido con una aplicación libre de errores que puedes compartir con tu familia y colegas. Incluso puedes ver la demostración en vivo haciendo clic en el enlace: Clasificación de Vidrio.

 Imagen de Clasificación de Vidrio

 

Conclusión

 

En este tutorial, recorrimos el proceso completo de construir, entrenar y desplegar un modelo de machine learning como una aplicación web. Utilizamos el conjunto de datos de clasificación de vidrio para entrenar un modelo simple de clasificación multiclase. Después de entrenar el modelo en scikit-learn, aprovechamos skops y Gradio para empaquetar y desplegar el modelo como una aplicación web en HuggingFace Spaces.

Hay muchas posibilidades para construir sobre este proyecto inicial. Podrías incorporar más características al modelo, probar diferentes algoritmos o desplegar la aplicación web en otras plataformas. Lo importante es que ahora tienes experiencia práctica con un flujo de trabajo completo de machine learning. Has tenido exposición a entrenar modelos, empaquetarlos para producción y construir interfaces web para interactuar con las predicciones del modelo.

¡Gracias por seguir el tutorial! Hazme saber si tienes alguna otra pregunta mientras continúas tu camino en el aprendizaje automático.  Abid Ali Awan (@1abidaliawan) es un profesional certificado en ciencia de datos que ama construir modelos de machine learning. Actualmente, se enfoca en la creación de contenido y escribe blogs técnicos sobre tecnologías de machine learning y ciencia de datos. Abid tiene un máster en Gestión Tecnológica y una licenciatura en Ingeniería de Telecomunicaciones. Su visión es construir un producto de inteligencia artificial utilizando una red neural de grafos para estudiantes que luchan con enfermedades mentales.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Algoritmo para la detección y movimiento robótico

Investigadores de la Universidad de California, Los Ángeles formularon un algoritmo que mejora las habilidades de nav...

Inteligencia Artificial

Permite un entrenamiento más rápido con la biblioteca de paralelismo de datos de Amazon SageMaker

El entrenamiento de modelos de lenguaje de gran tamaño (LLM, por sus siglas en inglés) se ha vuelto cada vez más popu...

Inteligencia Artificial

De las palabras a los mundos Explorando la narración de videos con la descripción de video fina y detallada multimodal de IA

El lenguaje es el modo predominante de interacción humana, ofreciendo más que solo detalles complementarios a otras f...

Aprendizaje Automático

La caja de voz de Meta la IA que habla todos los idiomas.

En un desarrollo innovador, Meta, la empresa matriz de Facebook, ha presentado su última inteligencia artificial (IA)...

Inteligencia Artificial

Explora técnicas avanzadas para la optimización de hiperparámetros con Amazon SageMaker Automatic Model Tuning

Crear soluciones de aprendizaje automático (ML) de alto rendimiento se basa en explorar y optimizar los parámetros de...