Esercitazione su ML.NET - Come iniziare in 10 minuti
Intro
Scopo
Utilizzare ML.NET Model Builder in Visual Studio per eseguire il training e usare il primo modello di Machine Learning con ML.NET.
Installare l'interfaccia della riga di comando di ML.NET, quindi eseguire il training e usare il primo modello di apprendimento automatico con ML.NET.
Prerequisiti
Nessuna.
macOS 12.0 o versioni successive.
Tempo di completamento
10 minuti + tempo di download/installazione
Scenario
Un'app in grado di prevedere se il testo delle recensioni dei clienti esprime una valutazione positiva o negativa.
Scarica e installa
Scarica e installa Visual Studio 2022.
Durante l'installazione, è necessario selezionare il carico di lavoro .NET desktop development insieme al componente facoltativo ML.NET Model Builder. L'uso del collegamento precedente deve preselezionare correttamente tutti i prerequisiti, come illustrato nell'immagine seguente:
Visual Studio 2022 è già disponibile?
Se si dispone già di Visual Studio 2022, assicurarsi che sia aggiornato e che sia installato il carico di lavoro richiesto:
- Selezionare il tasto Windows, digitare Programma di installazione di Visual Studio, quindi premere INVIO.
- Se richiesto, consentire al programma di installazione di aggiornarsi.
- Se è disponibile un aggiornamento per Visual Studio 2022, verrà visualizzato un pulsante Aggiorna. Selezionarlo per aggiornarlo prima di modificare l'installazione. Per questa esercitazione è consigliabile usare la versione più recente di Visual Studio 2022.
- Trova l'installazione di Visual Studio 2022 e seleziona il pulsante Modifica.
- Selezionare .NET desktop development e assicurarsi che nel riquadro destro sia selezionato ML.NET Model Builder. Selezionare il pulsante Modify.
Aggiornare all'ultima versione di Model Builder
Dopo aver abilitato ML.NET Model Builder in Visual Studio, scaricare e installare la versione più recente.
Scaricare l'ultima versione di Model Builder
Dopo il download, installare l'estensione facendo doppio clic sul file .vsix.
Verificare la disponibilità di aggiornamenti Visual Studio
Questa esercitazione è ottimizzata per l'ultima versione di Visual Studio. Se si ha già Visual Studio 2022, è possibile verificare la disponibilità di aggiornamenti:
- Selezionare il tasto Windows, digitare Programma di installazione di Visual Studio, quindi premere INVIO.
- Se richiesto, consentire al programma di installazione di aggiornarsi.
- Se è disponibile un aggiornamento, l'installazione di Visual Studio 2022 avrà un pulsante Update. Selezionarlo per l'aggiornamento.
Installa .NET SDK
Per compilare app .NET, è necessario scaricare e installare .NET 8 SDK (Software Development Kit).
Scaricare .NET 8 SDK x64 (Intel)
Scaricare .NET 8 SDK Arm64 (Apple Silicon)
Se si usa un Mac con un chip Apple M1 o M2, è necessario installare la versione Arm64 dell'SDK.
Installa ML.NET CLI
L'interfaccia della riga di comando (CLI) di ML.NET fornisce strumenti per compilare modelli di Machine Learning con ML.NET.
Note: Attualmente l'interfaccia della riga di comando di ML.NET è in anteprima e supporta solo la versione LTS più recente di .NET SDK (.NET 8).
Per i passaggi di installazione, è consigliabile usare una console Bash. Poiché l'impostazione predefinita per macOS è una console zsh, è possibile creare un'istanza singolare aprendo un nuovo terminale e inserendo il comando seguente.
bash
PER COMPUTER x64 - Eseguire il comando seguente:
dotnet tool install -g mlnet-linux-x64
PER LE ARCHITETTURE DI CHIP ARM64 - Eseguire, invece, il comando seguente:
dotnet tool install -g mlnet-linux-arm64
Se lo strumento viene installato correttamente, si dovrebbe visualizzare il messaggio di output seguente in cui [arch]
è l'architettura del chip:
You can invoke the tool using the following command: mlnet
Tool 'mlnet-linux-[arch]' (version 'X.X.X') was successfully installed.
dotnet tool install -g mlnet-osx-x64
PER LE ARCHITETTURE DI CHIP ARM64 - Eseguire, invece, il comando seguente:
dotnet tool install -g mlnet-osx-arm64
Se lo strumento viene installato correttamente, verrà visualizzato un messaggio di output in cui [arch]
è l'architettura del chip simile alla seguente:
You can invoke the tool using the following command: mlnet
Tool 'mlnet-osx-[arch]' (version 'X.X.X') was successfully installed.
Nota: se si usa una console diversa da Bash (ad esempio, zsh, che è il nuovo valore predefinito per macOS), sarà necessario assegnare autorizzazioni eseguibili mlnet
e includere mlnet
nel percorso del sistema. Le istruzioni su come eseguire questa operazione dovrebbero essere visualizzate nel terminale quando si installa (o qualsiasi altro strumento globale). In generale, il comando seguente dovrebbe funzionare per la maggior parte dei sistemi: chmod +x [PATH-TO-MLNET-CLI-EXECUTABLE]
Se si visualizzano istruzioni simili a quelle seguenti, eseguirle nel terminale.
cat << \EOF >> ~/.zprofile
#Add .NET Core SDK tools
export PATH="$PATH:~/.dotnet/tools"
EOF
In alternativa, è possibile provare a usare il comando seguente per eseguire lo strumento mlnet:
~/.dotnet/tools/mlnet
Se il comando continua a generare un errore, usare il pulsante Si è verificato un problema di seguito per segnalare il problema e ricevere assistenza per la risoluzione.
Crea la tua app
Aprire Visual Studio e creare una nuova app console .NET:
- Seleziona Crea un nuovo progetto dalla finestra iniziale di Visual Studio 2022.
- Seleziona il modello di progetto App console C#.
- Cambia il nome del progetto in
myMLApp
. - Verifica che Inserisci soluzione e progetto nella stessa directory non sia selezionato.
- Seleziona il pulsante Avanti.
- Seleziona .NET 8.0 (supporto a lungo termine) come framework.
- Selezionare il pulsante Crea. Visual Studio crea il progetto e carica il file
Program.cs
.
Aggiungi Machine Learning
Fare clic con il pulsante destro del mouse sul progetto
myMLApp
in Esplora soluzioni e selezionare Aggiungi > modello Machine Learning.- Nella finestra di dialogo Aggiungi nuovo elemento verificare che sia selezionata l'opzione Modello di Machine Learning (ML.NET).
Modificare il campo Nome in
SentimentModel.mbconfig
e selezionare il pulsante Aggiungi.
Alla soluzione viene aggiunto un nuovo file denominato SentimentModel.mbconfig
e l'interfaccia utente di Model Builder viene aperta in una nuova finestra degli strumenti ancorata in Visual Studio. Il file mbconfig è semplicemente un file JSON che tiene traccia dello stato dell'interfaccia utente.
Model Builder guiderà l'utente nel processo di creazione di un modello di apprendimento automatico nei passaggi seguenti.
Nel terminale eseguire il comando seguente:
mkdir myMLApp
cd myMLApp
Il comando mkdir
crea una nuova directory denominata myMLApp
e il comando cd myMLApp
la colloca nella directory dell'app appena creata.
Il codice di training del modello sarà generato nei passaggi successivi.
Seleziona uno scenario
Per generare il modello, è prima necessario selezionare lo scenario di Machine Learning. Model Builder supporta diversi scenari:
Nota: Se gli screenshot dell'esercitazione non corrispondono a quelli visualizzati, potrebbe essere necessario aggiornare la versione di Model Builder. Passare a Extensions > Manage Extensions per assicurarsi che non siano disponibili aggiornamenti per Model Builder. La versione utilizzata in questa esercitazione è la 17.18.2.
In questo caso, verrà stimato il sentimento in base al contenuto (testo) delle verifiche del cliente.
-
Nella schermata Scenario di Model Builder seleziona lo scenario Classificazione dati, visto che l'obiettivo è stimare in quale categoria ricade un commento (positivo o negativo).
-
Dopo aver selezionato lo scenario Classificazione dati, è necessario scegliere l'ambiente di training. Anche se alcuni scenari supportano il training in Azure, la classificazione supporta attualmente solo il training locale, quindi mantieni selezionato l'ambiente Locale e procedi al passaggio Dati.
Per generare il modello, è necessario selezionare lo scenario di apprendimento automatico.
L'interfaccia della riga di comando di ML.NET supporta diversi scenari di apprendimento automatico:
- Classificazione: usare questa opzione quando si vuole prevedere la categoria a cui appartengono i dati, ad esempio quando si analizza la valutazione delle recensioni dei clienti come positiva o negativa.
- Classificazione immagini: usa questa opzione quando desideri prevedere a quale categoria appartiene un'immagine (ad esempio, prevedere se è l'immagine di un gatto o di un cane).
- Regression (ad esempio, stima del valore) - Usa questa opzione quando vuoi stimare un valore numerico (ad esempio stimare il prezzo della casa).
- Previsione: usare questa opzione per prevedere i valori futuri di una serie temporale (ad esempio, prevedere le vendite trimestrali).
- Raccomandazione - Da usare quando si vogliono consigliare elementi agli utenti in base alle valutazioni cronologiche, ad esempio raccomandazioni di prodotti.
In questo caso la valutazione verrà prevista in base al contenuto (testo) delle recensioni dei clienti, quindi si userà una classificazione.
Scarica e aggiungi dati
Scarica i set di dati Sentiment Labelled Sentences dal Repository Machine Learning UCI. Decomprimi sentiment labelled sentences.zip
e salva il file yelp_labelled.txt
nella directory myMLApp
.
L'aspetto di Esplora soluzioni deve essere simile al seguente:
Ogni riga in yelp_labelled.txt
rappresenta una recensione diversa di un ristorante lasciata da un utente su Yelp. La prima colonna rappresenta il commento lasciato dall'utente e la seconda colonna rappresenta la valutazione del testo (0 è negativo, 1 è positivo). Le colonne sono separate da tabulazioni e il set di dati non contiene intestazioni. I dati sono simili ai seguenti:
Wow... Loved this place. 1
Crust is not good. 0
Not tasty and the texture was just nasty. 0
Aggiungi dati
In Model Builder puoi aggiungere dati da un file locale o connetterti a un database di SQL Server. In questo caso, aggiungerai yelp_labelled.txt
da un file.
Seleziona File come tipo di origine dati di input.
Cerca
yelp_labelled.txt
. Dopo aver selezionato il set di dati, verrà visualizzata un'anteprima dei dati nella sezione Anteprima dei dati. Poiché il set di dati non ha un'intestazione, le intestazioni vengono generate automaticamente ("col0" e "col1").In Colonna da prevedere (etichetta) , selezionare "col1". L'etichetta è ciò che si vuole prevedere, che in questo caso è il sentiment trovato nella seconda colonna ("col1") del set di dati.
Le colonne utilizzate per stimare l'etichetta sono denominate Funzionalità. Tutte le colonne del set di dati oltre all'etichetta vengono selezionate automaticamente come Funzionalità. In questo caso, la colonna del commento di revisione ("col0") è la colonna Funzionalità. È possibile aggiornare le colonne Funzionalità e modificare altre opzioni di caricamento dei dati in Opzioni dati avanzate, ma non è necessario per questo esempio.
Dopo aver aggiunto i dati, andare al passaggio Eseguire il training.
Esegui training del modello
A questo punto, sarà possibile eseguire il training del modello con il set di dati yelp_labelled.txt
.
Model Builder valuta molti modelli con algoritmi e impostazioni diverse in base alla quantità di tempo di formazione specificata per compilare il modello di esecuzione ottimale.
Modificare il valore di Tempo di training, ovvero la quantità di tempo da concedere a Model Builder per esplorare diversi modelli, impostandolo su 60 secondi. È possibile provare a incrementare questo numero se non vengono trovati modelli dopo il training. Si noti che per set di dati di dimensioni più grandi il tempo di training sarà più lungo. Model Builder modifica automaticamente il tempo di training time in base alle dimensioni del set di dati.
È possibile aggiornare la metrica di ottimizzazione e gli algoritmi usati nelle opzioni di training avanzate ; tuttavia, per questo esempio non è necessario eseguire questa operazione.
Seleziona Avvia il training per avviare il processo di training. Dopo l'avvio, è possibile visualizzare il tempo rimanente.
Risultati del training
Al termine del training, è possibile visualizzare un riepilogo dei risultati del training.
- MacroAccuracy ottimale : mostra l'accuratezza del modello migliore individuato da Model Builder. Una maggiore accuratezza indica che la previsione eseguita dal modello sui dati di test è più corretta.
- Miglior modello: mostra quale algoritmo ha ottenuto le migliori prestazioni durante l'esplorazione di Model Builder.
- Tempo di training: indica la quantità totale di tempo impiegato per il training o l'esplorazione dei modelli.
- Modelli esplorati (totale): mostra il numero totale di modelli esplorati da Model Builder nella quantità di tempo specificata.
- Code-behind generato: mostra i nomi dei file generati per consentire l'utilizzo del modello o il training di un nuovo modello.
Se vuoi, puoi esaminare maggiori informazioni sulla sessione di training nella finestra di output del Machine Learning.
Al termine del training del modello, vai al passaggio Evaluate.
Nel terminale eseguire questo comando nella cartella myMLApp
:
mlnet classification --dataset "yelp_labelled.txt" --label-col 1 --has-header false --name SentimentModel --train-time 60
Cosa significano questi comandi?
Il comando mlnet classification
esegue ML.NET con AutoML per esplorare numerose iterazioni dei modelli di classificazione nel tempo di training specificato, con combinazioni diverse di trasformazioni di dati, algoritmi e opzioni di algoritmi, quindi sceglie il modello con le prestazioni più elevate.
- --dataset: È stato scelto
yelp_labelled.txt
come set di dati (internamente, l'interfaccia della riga di comando dividerà il set di dati in set di dati di training e test). - --label-col: È necessario specificare la colonna di destinazione da prevedere (o l'etichetta). In questo caso, si vuole prevedere il sentiment nella seconda colonna (le colonne con indice zero indicano che si tratta della colonna "1").
- --has-header: Usare questa opzione per specificare se il set di dati ha un'intestazione. In questo caso, il set di dati non ha un'intestazione, quindi è false.
- --name: Usare questa opzione per specificare un nome per il modello di Machine Learning e gli asset correlati. In questo caso, tutte le risorse associate al modello di Machine Learning avranno SentimentModel nel nome.
- --train-time: È inoltre necessario specificare il tempo di esplorazione dei diversi modelli da parte di ML.NET CLI. In questo caso, 60 secondi (si può provare ad aumentare tale numero se non viene trovato alcun modello dopo il training). Si noti che per set di dati più grandi, è necessario impostare un tempo di training più lungo.
Stato
Durante l'esplorazione di modelli diversi da parte dell'interfaccia della riga di comando di ML.NET, vengono visualizzati i dati seguenti:
- Avvio training - questa sezione illustra ogni iterazione del modello, inclusi il trainer (algoritmo) usato e le metriche di valutazione per tale iterazione.
- Tempo rimanente e la barra di stato indicheranno la quantità di tempo rimanente nel processo di training in secondi.
- Algoritmo migliore - Mostra l'algoritmo che finora ha offerto le prestazioni migliori.
- Punteggio migliore: mostra le prestazioni del modello migliore finora. Una maggiore accuratezza indica che il modello è stato stimato in modo più corretto sui dati di test.
Volendo, maggiori informazioni sulla sessione di training sono disponibili nel file di log generato dall'interfaccia della riga di comando.
Valutare il modello
Il passaggio Evaluate mostra l’algorithm con le prestazioni migliori e la migliore accuratezza e ti consente di provare il modello nell'UI (interfaccia utente).
Prova il modello
È possibile effettuare previsioni sull'input di esempio nella sezione Prova il modello. La casella di testo è precompilate con la prima riga di dati del set di dati, ma è possibile modificare l'input e selezionare il pulsante Previsione per provare diverse previsioni della valutazione.
In questo caso, 0 indica una valutazione negativa e 1 indica una valutazione positiva.
Nota: se il modello non funziona correttamente , ad esempio se l'accuratezza è bassa o se il modello prevede solo valori '1', è possibile provare ad aggiungere più tempo e a ripetere il training. Questo è un esempio che usa un set di dati molto piccolo; per i modelli di livello di produzione è consigliabile aggiungere molti più dati e tempo di training.
Dopo aver valutato e provato il modello, passare a Utilizza.
Dopo aver selezionato il modello migliore, l'interfaccia della riga di comando di ML.NET visualizzerà il riepilogo del training, che mostra il riepilogo del processo di esplorazione, incluso il numero di modelli analizzati nel tempo di training specificato.
Modelli migliori
Mentre l'interfaccia della riga di comando di ML.NET genera il codice per il modello con le prestazioni più elevate, visualizza anche i primi modelli (fino a 5) con la massima precisione trovata nel tempo di esplorazione specificato. Visualizza diverse metriche di valutazione per i primi modelli, inclusi AUC, AUPRC e F1-score. Per altre informazioni, vedere le metriche di ML.NET.
Genera codice
Al termine del training, quattro file vengono aggiunti automaticamente come code-behind a SentimentModel.mbconfig
:
SentimentModel.consumption.cs
: questo file contiene le classi di input e output del modello e un metodoPredict
che può essere usato per l'utilizzo del modello.SentimentModel.evaluate.cs
: questo file contiene un metodoCalculatePFI
che usa la tecnica PFI (Permutation Feature Importance) per valutare quali funzionalità contribuiscono maggiormente alle stime del modello.SentimentModel.mlnet
: Il file è il modello ML.NET di cui è stato eseguito il training, ed è un file ZIP serializzato.SentimentModel.training.cs
: Questo file contiene il codice per comprendere l'importanza delle colonne di input nelle previsioni del modello.
Nel passaggio Consume in Model Builder viene fornito un frammento di codice che crea l'input di esempio per il modello e usa il modello per eseguire una stima su tale input.
Model Builder offre anche modelli Project che è possibile aggiungere facoltativamente alla soluzione. Sono disponibili due modelli di progetto (un'app console e un'API Web), entrambi che utilizzano il modello sottoposto a training.
L’interfaccia della riga di comando ML.NET aggiunge sia il modello di modello di Machine Learning sia il codice per il training e l’uso del modello, che include quanto segue:
-
Viene creata una nuova directory denominata SentimentModel contenente un'app console .NET che include i file seguenti:
Program.cs
: questo file contiene il codice per eseguire il modello.SentimentModel.consumption.cs
: questo file contiene le classi di input e output del modello e un metodoPredict
che può essere usato per l'utilizzo del modello.SentimentModel.mbconfig
: questo file è un file JSON che tiene traccia delle configurazioni e dei risultati del training.SentimentModel.training.cs
: questo file contiene la pipeline di training (trasformazioni di dati, algoritmo e parametri dell'algoritmo) usata per eseguire il training del modello finale.SentimentModel.zip
: questo file è il modello di ML.NET di cui è stato eseguito il training, che è un file ZIP serializzato.
Per provare il modello, è possibile eseguire l'app console per stimare il sentiment di una singola istruzione con il modello.
Usa il modello
L'ultimo passaggio consiste nell'utilizzare il modello di cui è stato eseguito il training nell'applicazione per l'utente finale.
-
Sostituire il codice
Program.cs
nel progettomyMLApp
con il codice seguente:Program.csusing 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}");
-
Eseguire
myMLApp
(selezionare Ctrl+F5 o Debug > Avvio senza debug). Verrà visualizzato l'output seguente, che stima se l'istruzione di input è positiva o negativa.
L’interfaccia della riga di comando di ML.NET ha generato il modello sottoposto a training e il codice, che ora è possibile usare nelle applicazioni .NET (ad esempio, l'applicazione SentimentModel
per console) seguendo questa procedura:
- Nella riga di comando passa alla directory
consumeModelApp
.Terminalcd SentimentModel
-
Aprire
Program.cs
in qualsiasi editor di codice ed esaminare il codice. Il codice dovrebbe essere simile al seguente:Program.csusing 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(); } } }
-
Eseguire
SentimentModel.ConsoleApp
. A tale scopo, eseguire il comando seguente nel terminale (assicurarsi di essere nella directorySentimentModel
):Terminaldotnet run
L'output dovrebbe avere un aspetto simile al seguente:
TerminalUsing model to make single prediction -- Comparing actual Col1 with predicted Col1 from sample data... Col0: Wow... Loved this place. Col1: 1 Class Score ----- ----- 1 0.9651076 0 0.034892436 =============== End of process, hit any key to finish ===============
Passaggi successivi
Congratulazioni, è stato creato il primo modello di Machine Learning con ML.NET Model Builder.
Ora che hai le nozioni di base, continua con questo modulo di apprendimento autoguidato su Microsoft Learn, in cui i dati del sensore verranno usati per rilevare se un dispositivo di produzione è danneggiato.
Microsoft Learn: Eseguire il training di un modello di manutenzione predittiva
ML.NET per principianti
Consenti a Luis di presentarti i concetti di apprendimento automatico e intelligenza artificiale, spiegare cosa puoi fare con esso e guidarti su come iniziare a usare OpenAI, Servizi di Azure AI e ML.NET:
Potrebbe interessarti anche...
Congratulazioni, è stato creato il primo modello di Machine Learning con il ML.NET.
Ora che hai usato l'interfaccia della riga di comando di ML.NET per la classificazione (in particolare per l'analisi del sentiment), puoi provare altri scenari. Prova uno scenario di regressione (in particolare la stima dei prezzi) usando il set di dati Taxi Fare per continuare a creare modelli ML.NET con l'interfaccia della riga di comando di ML.NET.
Scarica il set di dati Tariffe taxi
ML.NET per principianti
Consenti a Luis di presentarti il concetto di apprendimento automatico e intelligenza artificiale, spiegare cosa puoi fare con esso e guidarti su come iniziare a usare OpenAI, Servizi di Azure AI e ML.NET:
Potrebbe interessarti anche...