Use ML.NET Model Builder en Visual Studio para entrenar y usar su primer modelo de Machine Learning con ML.NET.
Instale la CLI de ML.NET y, a continuación, entrene y use su primer modelo de Machine Learning con ML.NET.
Ninguna.
macOS 10.15 o versiones posteriores.
10 minutos + tiempo de descarga/instalación
Una aplicación que puede predecir si el texto de las opiniones de los clientes es negativo o positivo.
Descargar e instalar Visual Studio 2022.
Durante la instalación, se debe seleccionar la carga de trabajo Desarrollo de escritorio de .NET junto con el componente de ML.NET Model Builder opcional. El uso del vínculo anterior debe preseleccionar todos los requisitos previos correctamente, como se muestra en la siguiente imagen:
Si ya tiene Visual Studio 2022, puede agregar la carga de trabajo de desarrollo de escritorio de .NET:
Una vez que haya habilitado ML.NET Model Builder en Visual Studio, descargue e instale la versión más reciente.
Descargar la versión más reciente de Model Builder
Después de descargarla, instale la extensión haciendo doble clic en el archivo .vsix.
Este tutorial está optimizado para la última versión de Visual Studio. Si ya tiene Visual Studio 2022, puede comprobar si hay actualizaciones:
Para compilar aplicaciones .NET, es necesario descargar e instalar el SDK (Software Development Kit) de .NET 6.
Si usa un Mac con un chip Apple M1 o M2, deberá instalar la versión Arm64 del SDK.
La interfaz de la línea de comandos (CLI) ML.NET proporciona herramientas para crear modelos de aprendizaje automático con ML.NET.
Nota: Actualmente, ML.NET CLI está en versión preliminar y solo admite la versión más reciente de LTS del SDK de .NET (.NET 6).
Para los pasos de instalación, se recomienda usar una consola de Bash. Dado que el valor predeterminado para macOS es una consola zsh, puede crear una instancia singular abriendo un nuevo terminal y ejecutando el siguiente comando.
bash
PARA MÁQUINAS x64: Ejecute el siguiente comando:
dotnet tool install -g mlnet-linux-x64
PARA ARQUITECTURAS CIRCUITO INTEGRADO ARM64 : Ejecute el siguiente comando en su lugar:
dotnet tool install -g mlnet-linux-arm64
Si la herramienta se instala con éxito, debería ver el siguiente mensaje de salida donde [arch]
es la arquitectura del chip:
You can invoke the tool using the following command: mlnet
Tool 'mlnet-linux-[arch]' (version '16.13.9') was successfully installed.
dotnet tool install -g mlnet-osx-x64
PARA ARQUITECTURAS CIRCUITO INTEGRADO ARM64 : Ejecute el siguiente comando en su lugar:
dotnet tool install -g mlnet-osx-arm64
Si la herramienta se instala con éxito, deberías ver un mensaje de salida donde [arch]
es la arquitectura del chip similar al siguiente:
You can invoke the tool using the following command: mlnet
Tool 'mlnet-osx-[arch]' (version '16.14.3') was successfully installed.
Nota: Si está usando una consola que no sea Bash (por ejemplo, zsh, que es la nueva predeterminada para macOS), entonces necesitará dar permisos de ejecuciónmlnet
e incluir mlnet
en la ruta del sistema. Las instrucciones sobre cómo hacer esto deberían aparecer en la terminal cuando instala mlnet (o cualquier herramienta global). En general, el siguiente comando debería trabajar en la mayoría de los sistemas: chmod +x [PATH-TO-MLNET-CLI-EXECUTABLE]
Si visualiza instrucciones similares a las siguientes, ejecútelas en su terminal.
cat << \EOF >> ~/.zprofile
#Add .NET Core SDK tools
export PATH="$PATH:~/.dotnet/tools"
EOF
Como alternativa, puede intentar usar el siguiente comando para ejecutar la herramienta mlnet:
~/.dotnet/tools/mlnet
Si el comando sigue dando un error, utilice el botón Me encontré con un problema que aparece a continuación para informar del problema y obtener ayuda para solucionarlo.
Abra Visual Studio y cree una nueva aplicación de consola .NET:
myMLApp
.Program.cs
.Haga clic con el botón derecho en el proyecto myMLApp
en el Explorador de soluciones y seleccione Agregar > Modelo de aprendizaje automático.
Cambie el campo Nombre a SentimentModel.mbconfig
y seleccione el botón Agregar.
Un nuevo archivo denominado SentimentModel.mbconfig
se agrega a la solución y la interfaz de usuario de Model Builder se abre en una nueva ventana de herramientas acoplada en Visual Studio. mbconfig es simplemente un archivo JSON que realiza un seguimiento del estado de la interfaz de usuario.
Model Builder le guiará por el proceso de creación de un modelo de aprendizaje automático en los pasos siguientes.
En el terminal, ejecute los siguientes comandos:
mkdir myMLApp
cd myMLApp
El comando mkdir
crea un nuevo directorio llamado myMLApp
, y el comando cd myMLApp
le permite un directorio de aplicaciones recién creado.
El código de entrenamiento del modelo se generará en los próximos pasos.
Para generar el modelo, primero debe seleccionar el escenario de aprendizaje automático. Model Builder admite varios escenarios:
Nota: Si las capturas de pantalla del tutorial no coinciden con lo que ve, es posible que necesite actualizar su versión de Model Builder. Vaya a Extensiones > Administrar extensiones para asegurarse de que no hay actualizaciones disponibles para Model Builder. La versión usada en este tutorial es 17.17.0.
En este caso, predecirá su opinión en función del contenido (texto) de las opiniones de los clientes.
En la pantalla de Escenario del Model Builder, seleccione el escenario Clasificación de datos, ya que está prediciendo en qué categoría cae un comentario (positivo o negativo).
Después de seleccionar el escenario de Clasificación de datos, debe elegir su entorno de entrenamiento. Aunque algunos escenarios admiten la formación en Azure, actualmente la clasificación solo admite la formación local, así que mantenga seleccionado el entorno Local y siga al paso Datos.
Para generar el modelo, debe seleccionar el escenario de aprendizaje automático.
Hay varios escenarios de ML compatibles con la CLI de ML.NET:
En este caso, predecirá la opinión en función del contenido (texto) de las opiniones de los clientes, por lo que usará clasificación.
Descargue los conjuntos de datos Sentiment Labelled Sentences del repositorio UCI Machine Learning Repository. Descomprima sentiment labelled sentences.zip
y guarde el archivo yelp_labelled.txt
en el directorio myMLApp
.
El Explorador de soluciones debe ser similar al siguiente:
Cada fila de yelp_labelled.txt
representa una revisión diferente de un restaurante que deja un usuario en Yelp. La primera columna representa el comentario que deja el usuario y la segunda columna representa la sensación expresada por el texto (0 es negativo, 1 es positivo). Las columnas están separadas por tabulaciones y el conjunto de datos no tiene encabezado. Los datos tienen un aspecto similar al siguiente:
Wow... Loved this place. 1
Crust is not good. 0
Not tasty and the texture was just nasty. 0
En Model Builder, puede agregar datos de un archivo local o conectarse a una base de datos SQL Server. En este caso, agregará yelp_labelled.txt
desde un archivo.
Seleccione Archivo como tipo de origen de datos de entrada.
Busque yelp_labelled.txt
. Una vez que seleccione el conjunto de datos, aparecerá una vista previa de los datos en la sección Vista previa de datos. Dado que el conjunto de datos no tiene un encabezado, los encabezados se generan automáticamente ("col0" y "col1").
En Columna para predecir (Etiqueta), seleccione "col1". La etiqueta es lo que está pronosticando, que en este caso es el sentimiento que se encuentra en la segunda columna ("col1") del conjunto de datos.
Las columnas que se usan para ayudar a predecir la etiqueta se denominan Características. Todas las columnas del conjunto de datos además de la etiqueta se seleccionan automáticamente como Características. En este caso, la columna de comentario de revisión ("col0") es la columna Característica. Puede actualizar las columnas de característica y modificar otras opciones de carga de datos en Opciones avanzadas de datos, pero no es necesario para este ejemplo.
Después de agregar sus datos, vaya al paso Entrenar.
Ahora, entrenará el modelo con el set de datos yelp_labelled.txt
.
Model Builder evalúa muchos modelos con distintos algoritmos y configuraciones en función de la cantidad de tiempo de entrenamiento proporcionado para compilar el modelo de mejor rendimiento.
Cambiar el Tiempo de entrenamiento, que es la cantidad de tiempo que le gustaría que Model Builder explore varios modelos, a 60 segundos (puede intentar aumentar este número si no se encuentra ningún modelo después del entrenamiento). Tenga en cuenta que, para conjuntos de datos más grandes, el tiempo de entrenamiento será más largo. Model Builder ajusta automáticamente el tiempo de entrenamiento en función del tamaño del conjunto de datos.
Puede actualizar la métrica de optimización y los algoritmos usados en Opciones avanzadas de entrenamiento , pero no es necesario para este ejemplo.
Seleccione Iniciar el entrenamiento para iniciar el proceso de entrenamiento. Una vez iniciado el entrenamiento, puede ver el tiempo restante.
Una vez finalizado el entrenamiento, puede ver un resumen de los resultados del entrenamiento.
Si lo desea, puede ver más información sobre la sesión de entrenamiento en la ventana Machine Learning Salida.
Una vez finalizado el entrenamiento del modelo, vaya al paso Evaluar.
En el terminal, ejecute el siguiente comando (en la carpeta myMLApp
):
mlnet classification --dataset "yelp_labelled.txt" --label-col 1 --has-header false --name SentimentModel --train-time 60
El comando mlnet classification
se ejecuta ML.NET con AutoML para explorar muchas iteraciones de modelos de clasificación en la cantidad determinada de tiempo de entrenamiento con distintas combinaciones de transformaciones de datos, algoritmos y opciones de algoritmo y, a continuación, elige el modelo de mayor rendimiento.
yelp_labelled.txt
como conjunto de datos (internamente, la CLI dividirá el conjunto de datos en conjuntos de datos de entrenamiento y de prueba).Mientras la CLI de ML.NET está explorando diferentes modelos, muestra los siguientes datos:
Si lo desea, puede ver más información sobre la sesión de entrenamiento en el archivo de registro generado por la CLI.
El paso Evaluar muestra el algoritmo de mejor rendimiento y la mejor precisión, y le permite probar el modelo en la interfaz de usuario.
Puede realizar predicciones en la entrada de ejemplo en la sección Probar el modelo. El cuadro de texto se rellena previamente con la primera línea de datos del conjunto de datos, pero puede cambiar la entrada y seleccionar Predecir para probar diferentes predicciones de opiniones.
En este caso, 0 significa opinión negativa y 1 significa opinión positiva.
Nota: Si el modelo no está funcionando bien (por ejemplo, si la Precisión es baja o si el modelo solo predice valores "1"), puede intentar agregar más tiempo y entrenar de nuevo. Esta es una muestra que utiliza un conjunto de datos muy pequeño; para los modelos a nivel de producción, querrá agregar muchos más datos y tiempo de entrenamiento.
Después de evaluar y probar el modelo, pase al paso Consumir.
Después de que la CLI de ML.NET seleccione el mejor modelo, mostrará el Resumen de entrenamiento, que le muestra un resumen del proceso de exploración, incluido cuántos modelos se exploraron en el tiempo de entrenamiento dado.
Si bien la CLI de ML.NET genera código para el modelo de mayor rendimiento, también muestra los mejores modelos (hasta 5) con la mayor precisión que encontró en el tiempo de exploración determinado. Muestra varias métricas de evaluación para esos modelos superiores, incluidos AUC, AUPRC y F1-score. Para obtener más información, consulte Métricas de ML.NET.
Una vez completado el entrenamiento, se agregan automáticamente cuatro archivos como código subyacente a SentimentModel.mbconfig
:
SentimentModel.consumption.cs
: este archivo contiene las clases de entrada y salida del modelo y un método Predict
que se puede usar para el uso del modelo.SentimentModel.evaluate.cs
: Este archivo contiene las clases de entrada y salida del modelo y un método Predict
que puede usarse para el consumo del modelo.SentimentModel.mlnet
: Este archivo es el modelo de ML.NET entrenado, que es un archivo ZIP serializado.SentimentModel.training.cs
: Este archivo contiene el código para reconocer la importancia que tienen las columnas de entrada en las predicciones del modelo.En el paso Consumir de Model Builder, se proporciona un fragmento de código que crea una entrada de ejemplo para el modelo y usa el modelo para realizar una predicción en esa entrada.
Model Builder también ofrece Plantillas de proyecto que puede agregar opcionalmente a su solución. Hay dos plantillas de proyecto (una aplicación de consola y una API web), ambas consumen el modelo entrenado.
La CLI de ML.NET agrega tanto el modelo de aprendizaje automático como el código para entrenar y consumir el modelo, que incluye lo siguiente:
Program.cs
: este archivo contiene código para ejecutar el modelo.SentimentModel.consumption.cs
: este archivo contiene las clases de entrada y salida del modelo y un método Predict
que se puede usar para el uso del modelo.SentimentModel.mbconfig
: este archivo es un archivo JSON que mantiene un registro de las configuraciones y resultados de su entrenamiento.SentimentModel.training.cs
: este archivo contiene la canalización de entrenamiento (transformaciones de datos, algoritmos y parámetros de algoritmo) usada para entrenar el modelo final.SentimentModel.zip
: este archivo es el modelo de ML.NET entrenado, que es un archivo ZIP serializado.Para probar el modelo, puede ejecutar la aplicación de consola para predecir la opinión de una sola declaración con el modelo.
El último paso es consumir el modelo entrenado en la aplicación del usuario final.
Reemplace el código Program.cs
en su proyecto myMLApp
con el código siguiente:
using MyMLApp;
// Add input data
var sampleData = new SentimentModel.ModelInput()
{
Col0 = "This restaurant was wonderful."
};
// Load model and predict output of sample data
var result = SentimentModel.Predict(sampleData);
// If Prediction is 1, sentiment is "Positive"; otherwise, sentiment is "Negative"
var sentiment = result.PredictedLabel == 1 ? "Positive" : "Negative";
Console.WriteLine($"Text: {sampleData.Col0}\nSentiment: {sentiment}");
Ejecutar myMLApp
(seleccionar Ctrl+F5 o Depurar > Iniciar sin depurar). Debería ver la siguiente salida, prediciendo si la declaración de entrada es positiva o negativa.
La CLI de ML.NET ha generado el modelo entrenado y el código para usted, por lo que ahora puede utilizar el modelo en aplicaciones .NET (por ejemplo, su aplicación de consola SentimentModel
) siguiendo estos pasos:
consumeModelApp
.
cd SentimentModel
Abra el Program.cs
en cualquier editor de código e inspeccione el código. El código debe ser similar al siguiente:
using System;
namespace SentimentModel.ConsoleApp
{
class Program
{
static void Main(string[] args)
{
// Add input data
SentimentModel.ModelInput sampleData = new SentimentModel.ModelInput()
{
Col0 = @"Wow... Loved this place."
};
// Make a single prediction on the sample data and print results
var predictionResult = SentimentModel.Predict(sampleData);
Console.WriteLine("Using model to make single prediction -- Comparing actual Col1 with predicted Col1 from sample data...\n\n");
Console.WriteLine($"Col0: @{"Wow... Loved this place."}");
Console.WriteLine($"Col1: {1F}");
Console.WriteLine($"\n\nPredicted Col1: {predictionResult.PredictedLabel}\n\n");
Console.WriteLine("=============== End of process, hit any key to finish ===============");
Console.ReadKey();
}
}
}
Ejecute el SentimentModel.ConsoleApp
. Puede hacerlo ejecutando el siguiente comando en la terminal (asegúrese de estar en el directorio SentimentModel
):
dotnet run
La salida debe tener un aspecto similar al siguiente:
Using model to make single prediction -- Comparing actual Col1 with predicted Col1 from sample data...
Col0: Wow... Loved this place.
Col1: 1
Predicted Col1: 1
=============== End of process, hit any key to finish ===============
Enhorabuena, ha creado su primer modelo de aprendizaje automático con ML.NET Model Builder.
Ahora que ya tiene los fundamentos, continúe con este módulo de aprendizaje autoguiado en Microsoft Learn, donde utilizará los datos de los sensores para detectar si un dispositivo de fabricación está roto.
Microsoft Learn: entrenar un modelo de mantenimiento predictivo
Permita que Pranav le presente el concepto de aprendizaje automático, lo que puede hacer con él y cómo empezar con ML.NET:
Es posible que también le interese...
Enhorabuena, ha creado su primer modelo de aprendizaje automático con la CLI de ML.NET.
Ahora que ha usado la CLI de ML.NET para la clasificación (en concreto, el análisis de sentimiento), puede probar otros escenarios. Pruebe un escenario de regresión (específicamente la predicción de precios) mediante el conjunto de datos Taxi Fare para seguir creando modelos de ML.NET con la CLI de ML.NET.
Descarga del conjunto de datos de Taxi Fare
Permita que Pranav le presente el concepto de aprendizaje automático, lo que puede hacer con él y cómo empezar con ML.NET:
Es posible que también le interese...