Esercitazione: Classificare la gravità delle violazioni dell'integrità del ristorante con Model Builder

Informazioni su come creare un modello di classificazione multiclasse usando Model Builder per classificare il livello di rischio delle violazioni del ristorante rilevate durante le verifiche di integrità.

In questa esercitazione verranno illustrate le procedure per:

  • Preparare e identificare i dati
  • Creare un file di configurazione di Model Builder
  • Scegliere uno scenario
  • Caricare i dati da un database
  • Eseguire il training del modello
  • Valutare il modello
  • Usare il modello per le stime

Prerequisiti

Per un elenco di istruzioni sui prerequisiti e sull'installazione, vedere la guida all'installazione di Model Builder.

Panoramica della classificazione multiclasse di Model Builder

Questo esempio crea un'applicazione console .NET Core C# che classifica il rischio di violazioni dell'integrità usando un modello di Machine Learning compilato con Model Builder. È possibile trovare il codice sorgente per questa esercitazione nel repository GitHub dotnet/machinelearning-samples .

Creare un'applicazione console

  1. Creare un'applicazione console C# .NET Core denominata "RestaurantViolations".

Preparare e identificare i dati

Il set di dati usato per eseguire il training e valutare il modello di Machine Learning è originariamente dal Dipartimento di San Francisco del Ristorante pubblico per la salute. Per praticità, il set di dati è stato condensato per includere solo le colonne pertinenti per eseguire il training del modello e effettuare stime. Visitare il sito Web seguente per altre informazioni sul set di dati.

Scaricare il set di dati Dei punteggi di sicurezza del ristorante e decomprimerlo.

Ogni riga del set di dati contiene informazioni relative alle violazioni osservate durante un'ispezione dal Dipartimento di integrità e una valutazione del rischio delle minacce presenti alla salute pubblica e alla sicurezza.

InspectionType ViolazioneDescription RiskCategory
Routine - Non programmato Superfici di contatto di cibo non pulite o sanificate in modo inadeguato Rischio moderato
Nuova proprietà Infestazioni a rischio elevato Rischio elevato
Routine - Non programmato Pulire o conservare correttamente i tessuti non puliti o inadeguati Basso rischio
  • InspectionType: tipo di ispezione. Ciò può essere un'ispezione per la prima volta per una nuova istituzione, un'ispezione di routine, un'ispezione dei reclami e molti altri tipi.
  • ViolazioneDescription: una descrizione della violazione rilevata durante l'ispezione.
  • RiskCategory: la gravità del rischio rappresenta una violazione per la salute pubblica e la sicurezza.

label è la colonna sulla quale eseguire le stime. Quando si esegue un'attività di classificazione, l'obiettivo consiste nell'assegnare una categoria (testo o numerico). In questo scenario di classificazione la gravità della violazione viene assegnata al valore di rischio basso, moderato o elevato. Di conseguenza, RiskCategory è l'etichetta. Sono features gli input che si assegnano al modello per stimare l'oggetto label. In questo caso, l'inspectionType e la violazioneDescription vengono usati come funzionalità o input per stimare Il rischioCategory.

Creare il file di configurazione di Model Builder

Quando si aggiunge prima Model Builder alla soluzione, verrà richiesto di creare un mbconfig file. Il mbconfig file tiene traccia di tutto ciò che si esegue in Generatore modelli per consentire di riaprire la sessione.

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto RestaurantViolations e scegliere Aggiungi>modello di Machine Learning....
  2. Assegnare un nome al mbconfig progetto RestaurantViolationsPrediction e fare clic sul pulsante Aggiungi .

Scegliere uno scenario

Schermata dello scenario di Generatore modelli

Per eseguire il training del modello, selezionare dall'elenco degli scenari di Machine Learning disponibili forniti da Model Builder. In questo caso, lo scenario è La classificazione dei dati.

  1. Per questo esempio, l'attività è la classificazione multiclasse. Nel passaggio Scenario di Generatore modelli selezionare lo scenario di classificazione dei dati .

Caricare i dati

Model Builder accetta i dati da un database SQL Server o da un file locale in , tsvo txt in csvformato .

  1. Nel passaggio dati dello strumento Generatore modelli selezionare SQL Server dalla selezione del tipo di origine dati.
  2. Selezionare il pulsante Scegli origine dati .
    1. Nella finestra di dialogo Scegli origine dati selezionare Microsoft SQL Server File di database.
    2. Deselezionare la casella di controllo Usa sempre questa selezione e fare clic su Continua.
    3. Nella finestra di dialogo Proprietà connessione selezionare Sfoglia e selezionare il file RestaurantScores.mdf scaricato.
    4. Selezionare OK.
  3. Scegliere Violazioni dall'elenco a discesa Tabella .
  4. Scegliere RiskCategory nell'elenco a discesa Column to predict (Label).
  5. Lasciare le selezioni predefinite in Opzioni di dati avanzate.
  6. Fare clic sul pulsante Passaggio successivo per passare al passaggio di training in Generatore modelli.

Eseguire il training del modello

L'attività di Machine Learning usata per eseguire il training del modello di classificazione dei problemi in questa esercitazione è la classificazione multiclasse. Durante il processo di training del modello, Model Builder esegue il training di modelli separati usando algoritmi e impostazioni di classificazione multiclasse diversi per trovare il modello più efficiente per il set di dati.

Il tempo necessario per il training del modello è proporzionale alla quantità di dati. Generatore modelli seleziona automaticamente un valore predefinito per Time to training (secondi) in base alle dimensioni dell'origine dati.

  1. Model Builder imposta il valore di Time per il training (secondi) su 60 secondi. Il training per un periodo di tempo più lungo consente a Generatore modelli di esplorare un numero maggiore di algoritmi e combinazioni di parametri nella ricerca del modello migliore.
  2. Fare clic su Avvia training.

Durante il processo di training i dati dell'avanzamento vengono visualizzati nella sezione Training results del passaggio relativo al training.

  • Stato visualizza lo stato di completamento del processo di training.
  • La migliore accuratezza visualizza l'accuratezza del modello con prestazioni migliori trovate finora da Model Builder. Precisione maggiore indica il modello stimato più correttamente con i dati di test.
  • L'algoritmo migliore visualizza il nome dell'algoritmo con prestazioni migliori eseguite finora da Model Builder.
  • L'ultimo algoritmo visualizza il nome dell'algoritmo usato più di recente da Model Builder per eseguire il training del modello.

Al termine del training, il mbconfig file avrà il modello generato chiamato RestaurantViolationsPrediction.zip dopo il training e due file C# con esso:

  • RestaurantViolationsPrediction.consumption.cs: questo file include un metodo pubblico che caricherà il modello e creerà un motore di stima con esso e restituirà la stima.
  • RestaurantViolationsPrediction.training.cs: questo file è costituito dalla pipeline di training creata da Generatore modelli per creare il modello migliore, inclusi gli iperparametri usati.

Fare clic sul pulsante Passaggio successivo per passare al passaggio di valutazione.

Valutare il modello

Il risultato del passaggio relativo al training è rappresentato dal modello con le prestazioni migliori. Nel passaggio di valutazione dello strumento Generatore modelli, nella sezione Modello migliore, conterrà l'algoritmo usato dal modello con prestazioni ottimali nella voce Modello insieme alle metriche per tale modello in Accuratezza.

Inoltre, nella finestra Output di Visual Studio sarà presente una tabella di riepilogo contenente i modelli principali e le relative metriche.

Questa sezione consente inoltre di testare il modello eseguendo una singola stima. Offrirà caselle di testo per compilare i valori e fare clic sul pulsante Stima per ottenere una stima dal modello migliore. Per impostazione predefinita, questa operazione verrà compilata da una riga casuale nel set di dati.

(Facoltativo) Usare il modello

Questo passaggio avrà modelli di progetto che è possibile usare per utilizzare il modello. Questo passaggio è facoltativo e è possibile scegliere il metodo più adatto alle proprie esigenze su come servire il modello.

  • App console
  • API Web

App console

Quando si aggiunge un'app console alla soluzione, verrà richiesto di assegnare un nome al progetto.

  1. Assegnare un nome al progetto console RestaurantViolationsPrediction_Console.

  2. Fare clic su Aggiungi alla soluzione per aggiungere il progetto alla soluzione corrente.

  3. Eseguire l'applicazione.

    L'output generato dal programma dovrebbe essere simile al frammento di codice seguente:

    InspectionType: Routine - Unscheduled
    ViolationDescription: Moderate risk food holding temperature
    
    Predicted RiskCategory: Moderate Risk
    

API Web

Quando si aggiunge un'API Web alla soluzione, verrà richiesto di assegnare un nome al progetto.

  1. Assegnare un nome al progetto API Web RestaurantViolationsPrediction_API.

  2. Fare clic su Aggiungi alla soluzione* per aggiungere il progetto alla soluzione corrente.

  3. Eseguire l'applicazione.

  4. Aprire PowerShell e immettere il codice seguente in cui PORT è la porta in ascolto dell'applicazione.

    $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"
    
  5. Se ha esito positivo, l'output dovrebbe essere simile al testo seguente. L'output ha l'oggetto RiskCategory stimato come rischio moderato e ha i punteggi di ognuna delle etichette di input - Basso rischio, alto rischio e rischio moderato.

    prediction    score
    ----------    -----
    Moderate Risk {0.055566575, 0.058012854, 0.88642055}
    

Congratulazioni! È stato creato un modello di Machine Learning per classificare il rischio di violazioni dell'integrità usando Model Builder. È possibile trovare il codice sorgente per questa esercitazione nel repository GitHub dotnet/machinelearning-samples .

Risorse aggiuntive

Per altre informazioni sugli argomenti presentati in questa esercitazione, vedere le risorse seguenti: