Condividi tramite


Esercitazione: Classificare la gravità delle violazioni sanitarie nei ristoranti con Model Builder

Informazioni su come creare un modello di classificazione multiclasse usando Model Builder per classificare il livello di rischio delle violazioni dei ristoranti rilevate durante le ispezioni sanitarie.

In questa esercitazione si apprenderà come:

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

Prerequisiti

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

Panoramica della classificazione multiclasse in Model Builder

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

Creare un'applicazione console

Creare un'applicazione console C# denominata "RestaurantViolations".

Preparare e comprendere i dati

Il set di dati utilizzato per addestrare e valutare il modello di apprendimento automatico proviene dai punteggi di sicurezza dei ristoranti del Dipartimento della Salute Pubblica di San Francisco. Per praticità, il set di dati è stato condensato in modo da includere solo le colonne rilevanti per eseguire il training del modello ed eseguire stime. Visitare il sito Web seguente per altre informazioni sul set di dati.

Scaricare il set di dati Restaurant Safety Scores e decomprimerlo.

Ogni riga del set di dati contiene informazioni sulle violazioni osservate durante un'ispezione del Dipartimento sanitario e una valutazione del rischio della minaccia che tali violazioni presentano alla salute pubblica e alla sicurezza.

Tipo di Ispezione ViolazioneDescrizione RiskCategory
Routine - Non programmato Superfici di contatto alimentari non correttamente pulite o sanificate Rischio moderato
Nuova proprietà Infestazione di parassiti a rischio elevato Rischio elevato
Routine - Non pianificato Panni detergenti non puliti o correttamente conservati o sanificante inadeguato. Basso rischio
  • InspectionType: tipo di ispezione. Può essere una prima ispezione per un nuovo stabilimento, un'ispezione di routine, un'ispezione di denuncia e molti altri tipi.
  • ViolazioneDescription: descrizione della violazione rilevata durante l'ispezione.
  • RiskCategory: la gravità del rischio che una violazione rappresenta per la salute e la sicurezza pubblica.

label è la colonna che vuoi prevedere. Quando si esegue un'attività di classificazione, l'obiettivo è assegnare una categoria (testo o numerico). In questo scenario di classificazione, alla gravità della violazione viene assegnato il valore di basso, moderato o alto rischio. Pertanto, RiskCategory è l'etichetta. features Sono gli input che si assegnano al modello per stimare l'oggetto label. In questo caso, inspectionType e ViolationDescription vengono usati come funzionalità o input per stimare RiskCategory.

Creare un file di configurazione di Model Builder

Quando si aggiunge per la prima volta Generatore modelli alla soluzione, verrà richiesto di creare un file mbconfig. Il file mbconfig 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 al progetto il mbconfig nome RestaurantViolationsPrediction e fare clic sul pulsante Aggiungi .

Scegliere uno scenario

schermata dello Scenario 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 è Classificazione dei dati.

  1. Per questo esempio, il compito è la classificazione multiclasse. Nel passaggio Scenario di Generatore modelli selezionare lo scenario di classificazione dei dati .

Carica i dati

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

  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 File di database di Microsoft SQL Server.
    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. Seleziona OK.
  3. Scegli Violazioni dal menu a tendina Tabella.
  4. Scegliere CategoriaRischio nell' elenco a discesa Colonna da prevedere (Etichetta).
  5. Lasciare le selezioni predefinite in Opzioni dati avanzate.
  6. Fare clic sul pulsante Passaggio successivo per spostarsi alla fase di addestramento in Model Builder.

Addestrare il 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 diversi algoritmi e impostazioni di classificazione multiclasse per trovare il modello con prestazioni migliori per il set di dati.

Il tempo necessario per il training del modello è proporzionale alla quantità di dati. Model Builder seleziona automaticamente un valore predefinito per Tempo di addestramento (secondi) in base alle dimensioni dell'origine dati.

  1. Model Builder imposta il valore di Tempo di addestramento (secondi) su 60 secondi. Un periodo di training più lungo consente a Model Builder di esplorare un numero maggiore di algoritmi e di combinazioni di parametri alla ricerca del modello migliore.
  2. Fare clic su Avvia formazione.

Durante il processo di formazione, i dati sullo stato di avanzamento vengono visualizzati nella sezione Training results della fase di formazione.

  • Lo stato indica il completamento del processo di training.
  • L'accuratezza migliore consente di visualizzare l'accuratezza del modello con prestazioni migliori rilevate finora da Generatore modelli. Maggiore accuratezza indica che il modello ha stimato più correttamente 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 file di mbconfig avrà il modello generato denominato 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 con cui Generatore modelli ha creato 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 di training sarà un modello con prestazioni ottimali. Nel passaggio di valutazione dello strumento Generatore modelli, nella sezione Modello migliore, conterrà l'algoritmo usato dal modello con prestazioni migliori 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 consentirà anche di testare il modello eseguendo una singola stima. Offrirà caselle di testo per compilare i valori ed è possibile fare clic sul pulsante Stima per ottenere una stima dal modello migliore. Per impostazione predefinita, questo verrà compilato da una riga casuale nel set di dati.

(Facoltativo) Consumare il modello

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

  • Applicazione Console
  • API per il Web

Console App

Quando si aggiunge un'app console alla soluzione, verrà richiesto di denominare il progetto.

  1. Denominare il 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 per il Web

Quando si aggiunge un'API Web alla soluzione, verrà richiesto di denominare il progetto.

  1. Assegnare al progetto API Web il nome RestaurantViolationsPrediction_API.

  2. Fai clic 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 su cui è in ascolto l'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. In caso di esito positivo, l'output dovrebbe essere simile al testo seguente. L'output ha il valore di RiskCategory stimato come rischio moderato e ha i punteggi di ognuna delle etichette di input: basso rischio, rischio elevato e rischio moderato.

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

Congratulazioni! Un modello di apprendimento automatico è stato creato correttamente per classificare il rischio di violazioni sanitarie usando Model Builder. È possibile trovare il codice sorgente per questa esercitazione nella dotnet/machinelearning-samples repository GitHub.

Risorse aggiuntive

Per altre informazioni sugli argomenti menzionati in questa esercitazione, visitare le risorse seguenti: