Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Aprende a crear un modelo de clasificación multiclase usando Model Builder para clasificar el nivel de riesgo de infracciones de restaurante encontradas durante las inspecciones de salud.
En este tutorial, aprenderá a:
- Preparación y comprensión de los datos
- Creación de un archivo de configuración del Generador de modelos
- Elección de un escenario
- Carga de datos desde una base de datos
- Entrenamiento del modelo
- Evaluación del modelo
- Uso del modelo para predicciones
Prerrequisitos
Para obtener una lista de los requisitos previos e instrucciones de instalación, visite la guía de instalación del Generador de modelos.
Visión general de la clasificación multiclase en Model Builder
En este ejemplo se crea una aplicación de consola de C# que clasifica el riesgo de infracciones de salud mediante un modelo de aprendizaje automático construido con Model Builder. Puede encontrar el código fuente de este tutorial en el repositorio dotnet/machinelearning-samples de GitHub.
Creación de una aplicación de consola
Cree una aplicación de consola de C# denominada "RestaurantViolations".
Preparación y comprensión de los datos
El conjunto de datos que se usa para entrenar y evaluar el modelo de aprendizaje automático es originalmente del Departamento de Salud Pública de San Francisco de puntuaciones de seguridad de restaurantes. Para mayor comodidad, el conjunto de datos se ha condensado para incluir solo las columnas pertinentes para entrenar el modelo y realizar predicciones. Visite el siguiente sitio web para obtener más información sobre el conjunto de datos.
Descargue el conjunto de datos de Puntuaciones de Seguridad de Restaurantes y descomprímalo.
Cada fila del conjunto de datos contiene información sobre las infracciones observadas durante una inspección del Departamento de Salud y una evaluación de riesgos de la amenaza que esas infracciones presentan a la salud pública y la seguridad.
| Tipo de Inspección | DescripciónDeViolación | RiskCategory |
|---|---|---|
| Rutina: no programada | Superficies de contacto de alimentos limpiadas o saneadas incorrectamente | Riesgo moderado |
| Nueva propiedad | Plaga de vérminos de alto riesgo | Alto riesgo |
| Rutina: no programada | Paños de limpieza no limpios o no almacenados correctamente, o desinfectante inadecuado. | Bajo riesgo |
- InspectionType: el tipo de inspección. Esto puede ser una inspección por primera vez para un nuevo establecimiento, una inspección rutinaria, una inspección de quejas y muchos otros tipos.
- ViolationDescription: una descripción de la infracción encontrada durante la inspección.
- RiskCategory: la gravedad del riesgo que una infracción representa para la salud pública y la seguridad.
label es la columna que desea predecir. Al realizar una tarea de clasificación, el objetivo es asignar una categoría (texto o numérico). En este escenario de clasificación, a la gravedad de la infracción se le asigna el valor de riesgo bajo, moderado o alto. Por lo tanto, RiskCategory es la etiqueta . features son los datos de entrada que proporciona al modelo para predecir label. En este caso, inspectionType y ViolationDescription se usan como características o entradas para predecir RiskCategory.
Creación de un archivo de configuración del Generador de modelos
Al agregar por primera vez Model Builder a la solución, se le pedirá que cree un mbconfig archivo. El mbconfig archivo realiza un seguimiento de todo lo que hace en el Generador de modelos para permitirle volver a abrir la sesión.
- En el Explorador de soluciones, haga clic con el botón derecho en el proyecto RestaurantViolations y seleccione Agregar>modelo de Machine Learning.
- Asigne al proyecto el
mbconfignombre RestaurantViolationsPrediction y haga clic en el botón Agregar .
Elección de un escenario
Para entrenar el modelo, seleccione en la lista de escenarios de aprendizaje automático disponibles proporcionados por Model Builder. En este caso, el escenario es Clasificación de datos.
- En este ejemplo, la tarea es una clasificación multiclase. En el paso Escenario del Generador de modelos, seleccione el escenario de clasificación de datos .
Carga de los datos
Model Builder acepta datos de una base de datos de SQL Server o un archivo local en formato csv, tsv o txt.
- En el paso de datos de la herramienta Generador de modelos, seleccione SQL Server en la selección del tipo de origen de datos.
- Seleccione el botón Elegir origen de datos .
- En el cuadro de diálogo Elegir origen de datos , seleccione Archivo de base de datos de Microsoft SQL Server.
- Desactive la casilla Usar siempre esta selección y haga clic en Continuar.
- En el cuadro de diálogo Propiedades de conexión , seleccione Examinar y seleccione el archivo RestaurantScores.mdf descargado.
- Selecciona Aceptar.
- Elija Infracciones en la lista desplegable Tabla .
- Elija RiskCategory en la lista desplegable Columna para predecir (Etiqueta).
- Deje las selecciones predeterminadas en Opciones de datos avanzadas.
- Haga clic en el botón Paso siguiente para ir al paso de entrenamiento en Model Builder.
Entrenamiento del modelo
La tarea de aprendizaje automático que se usa para entrenar el modelo de clasificación de problemas en este tutorial es la clasificación multiclase. Durante el proceso de entrenamiento del modelo, Model Builder entrena modelos independientes mediante distintos algoritmos y configuraciones de clasificación multiclase para encontrar el modelo de mejor rendimiento para el conjunto de datos.
El tiempo necesario para que el modelo se entrene sea proporcional a la cantidad de datos. El Generador de modelos selecciona automáticamente un valor predeterminado para Tiempo para entrenar (segundos) en función del tamaño del origen de datos.
- El Generador de modelos establece el valor de Time para entrenar (segundos) en 60 segundos. El entrenamiento durante un período más largo permite al Generador de modelos explorar un mayor número de algoritmos y combinación de parámetros en la búsqueda del mejor modelo.
- Haga clic en Iniciar entrenamiento.
A lo largo del proceso de entrenamiento, los datos de progreso se muestran en la Training results sección del paso de entrenamiento.
- El estado muestra el estado de finalización del proceso de entrenamiento.
- La mejor precisión muestra la precisión del modelo de mejor rendimiento encontrado por model Builder hasta ahora. Una mayor precisión significa que el modelo predijo más correctamente en los datos de prueba.
- El mejor algoritmo muestra el nombre del algoritmo de mejor rendimiento que ha realizado el Generador de modelos hasta ahora.
- El último algoritmo muestra el nombre del algoritmo usado más recientemente por el Generador de modelos para entrenar el modelo.
Una vez completado el entrenamiento, el mbconfig archivo tendrá el modelo generado llamado RestaurantViolationsPrediction.zip después del entrenamiento y dos archivos de C# con él:
- RestaurantViolationsPrediction.consumption.cs: este archivo tiene un método público que cargará el modelo y creará un motor de predicción con él y devolverá la predicción.
- RestaurantViolationsPrediction.training.cs: este archivo consta de la canalización de entrenamiento con la que el Generador de modelos ha creado el mejor modelo, incluidos los hiperparámetros que usó.
Haga clic en el botón Paso siguiente para ir al paso de evaluación.
Evaluación del modelo
El resultado del paso de entrenamiento será un modelo que tenga el mejor rendimiento. En el paso de evaluación de la herramienta Generador de modelos, en la sección Best model (Mejor modelo ), contendrá el algoritmo utilizado por el modelo de mejor rendimiento en la entrada Modelo junto con las métricas de ese modelo en Precisión.
Además, en la ventana Salida de Visual Studio, habrá una tabla de resumen que contiene los modelos principales y sus métricas.
Esta sección también le permitirá probar el modelo realizando una sola predicción. Ofrecerá cuadros de texto para rellenar los valores y puede hacer clic en el botón Predecir para obtener una predicción del mejor modelo. De forma predeterminada, se rellenará mediante una fila aleatoria del conjunto de datos.
(Opcional) Consumo del modelo
Este paso tendrá plantillas de proyecto que puede usar para consumir el modelo. Este paso es opcional y puede elegir el método que mejor se adapte a sus necesidades sobre cómo servir el modelo.
- Aplicación de consola
- API de la Web
Aplicación de consola
Al agregar una aplicación de consola a la solución, se le pedirá que asigne un nombre al proyecto.
Asigne al proyecto de consola el nombre RestaurantViolationsPrediction_Console.
Haga clic en Agregar a la solución para agregar el proyecto a la solución actual.
Ejecute la aplicación.
La salida generada por el programa debe ser similar al fragmento de código siguiente:
InspectionType: Routine - Unscheduled ViolationDescription: Moderate risk food holding temperature Predicted RiskCategory: Moderate Risk
API de la Web
Al agregar una API web a la solución, se le pedirá que asigne un nombre al proyecto.
Asigne al proyecto de API web el nombre RestaurantViolationsPrediction_API.
Haga clic en Agregar a la solución* para agregar el proyecto a la solución actual.
Ejecute la aplicación.
Abra PowerShell y escriba el siguiente comando donde PORT es el puerto en el que la aplicación está escuchando.
$body = @{ InspectionType="Reinspection/Followup" ViolationDescription="Inadequately cleaned or sanitized food contact surfaces" } Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"Si se ejecuta correctamente, la salida debe ser similar al texto siguiente. La salida tiene el valor de RiskCategory predicho como Riesgo moderado y tiene las puntuaciones de cada una de las etiquetas de entrada: Bajo riesgo, Alto riesgo y Riesgo moderado.
prediction score ---------- ----- Moderate Risk {0.055566575, 0.058012854, 0.88642055}
¡Felicidades! Ha construido con éxito un modelo de aprendizaje automático para clasificar el riesgo de infracciones de salud mediante Model Builder. Puede encontrar el código fuente de este tutorial en el repositorio dotnet/machinelearning-samples de GitHub.
Recursos adicionales
Para obtener más información sobre los temas mencionados en este tutorial, visite los siguientes recursos:
