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:
- Este artículo de IA presenta RMT una fusión de RetNet y Transformer, abriendo una nueva era en eficiencia y precisión de la visión por computadora.
- Investigadores de la Universidad de Tsinghua presentan OpenChat Un nuevo marco de Inteligencia Artificial (IA) que mejora los modelos de lenguaje de código abierto con datos de calidad mixta.
- Este informe de AI de Microsoft presenta un nuevo enfoque para entrenar modelos de lenguaje imitar la comprensión de lectura humana para un rendimiento mejorado en biomedicina, finanzas y derecho.
- Windows Float Processed
- Windows Non-Float Processed
- Vehicle Windows Float Processed
- Vehicle Windows Non Float Processed (faltante en el conjunto de datos)
- Containers
- Utensilios de mesa
- 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!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- Creando un Agente LLAma 2 Empoderado con Conocimiento de Wikipedia
- ¿Está sobrevalorada la democratización de los datos?
- Cómo los científicos de datos pueden beneficiarse de usar LinkedIn más
- Cómo la capacitación en persona en ODSC West puede darle ventaja a su equipo
- ¡Pandas ¡Trabaja en tus dtypes!
- Amazon planea invertir hasta $4 mil millones en la innovadora startup de inteligencia artificial, Anthropic
- El fundador y CEO de NVIDIA, Jensen Huang, regresa a Denny’s donde NVIDIA lanzó una visión de billones de dólares.