Självstudie: Klassificera allvarlighetsgraden för överträdelser av restauranghälsa med Model Builder

Lär dig hur du skapar en klassificeringsmodell med flera klasser med Model Builder för att kategorisera risknivån för restaurangöverträdelser som påträffas under hälsoinspektioner.

I den här guiden får du lära dig att:

  • Förbereda och förstå data
  • Skapa en model builder-konfigurationsfil
  • Välj ett scenario
  • Läsa in data från en databas
  • Träna modellen
  • Utvärdera modellen
  • Använda modellen för förutsägelser

Krav

En lista över krav och installationsinstruktioner finns i installationsguiden för Model Builder.

Översikt över multiklassklassificering för Model Builder

Det här exemplet skapar ett C# .NET Core-konsolprogram som kategoriserar risken för hälsoöverträdelser med hjälp av en maskininlärningsmodell som skapats med Model Builder. Du hittar källkoden för den här självstudien på GitHub-lagringsplatsen dotnet/machinelearning-samples .

Skapa ett konsolprogram

  1. Skapa ett C# .NET Core-konsolprogram med namnet "RestaurantViolations".

Förbereda och förstå data

Datauppsättningen som används för att träna och utvärdera maskininlärningsmodellen kommer ursprungligen från San Francisco Department of Public Health Restaurant Safety Scores. För enkelhetens skull har datauppsättningen komprimerats för att endast inkludera kolumner som är relevanta för att träna modellen och göra förutsägelser. Besök följande webbplats om du vill veta mer om datauppsättningen.

Ladda ned datauppsättningen Restaurant Safety Scores och packa upp den.

Varje rad i datamängden innehåller information om överträdelser som observerats under en inspektion från hälsodepartementet och en riskbedömning av det hot som överträdelserna utgör för folkhälsan och säkerheten.

InspectionType ViolationDescription RiskCategory
Rutin – oplanerad Otillräckligt rengjorda eller sanerade kontaktytor för livsmedel Måttlig risk
Nytt ägande Angrepp på ohyran med hög risk Hög risk
Rutin – oplanerad Avtorkningsdukar som inte är rena eller korrekt lagrade eller otillräckliga sanitatorer Låg risk
  • InspectionType: typen av inspektion. Detta kan antingen vara en förstagångsinspektion för en ny anläggning, en rutininspektion, en klagomålsinspektion och många andra typer.
  • ViolationDescription: en beskrivning av överträdelsen som hittades under inspektionen.
  • RiskKategori: den risk allvarlighetsgrad som en överträdelse utgör för folkhälsan och säkerheten.

label är den kolumn som du vill förutsäga. När du utför en klassificeringsuppgift är målet att tilldela en kategori (text eller numerisk). I det här klassificeringsscenariot tilldelas allvarlighetsgraden för överträdelsen värdet låg, måttlig eller hög risk. Därför är RiskCategory etiketten. är features de indata som du ger modellen för att förutsäga label. I det här fallet används InspectionType och ViolationDescription som funktioner eller indata för att förutsäga RiskCategory.

Skapa konfigurationsfil för Model Builder

När du först lägger till Model Builder i lösningen uppmanas du att skapa en mbconfig fil. Filen mbconfig håller reda på allt du gör i Model Builder så att du kan öppna sessionen igen.

  1. I Solution Explorer högerklickar du på projektet RestaurantViolations och väljer Lägg till>maskininlärningsmodell....
  2. Ge projektet namnet mbconfigRestaurantViolationsPrediction och klicka på knappen Lägg till .

Välj ett scenario

Scenarioskärm för Model Builder

Om du vill träna din modell väljer du från listan över tillgängliga maskininlärningsscenarier som tillhandahålls av Model Builder. I det här fallet är scenariot Dataklassificering.

  1. För det här exemplet är uppgiften multiklassklassificering. I scenariosteget i Model Builder väljer du scenariot Dataklassificering .

Läsa in data

Model Builder accepterar data från en SQL Server databas eller en lokal fil i csv, tsveller txt format.

  1. I datasteget i verktyget Model Builder väljer du SQL Server från valet av datakälla.
  2. Välj knappen Välj datakälla .
    1. I dialogrutan Välj datakälla väljer du Microsoft SQL Server Database File.
    2. Avmarkera kryssrutan Använd alltid den här markeringen och klicka på Fortsätt.
    3. I dialogrutan Anslutningsegenskaper väljer du Bläddra och väljer den nedladdade RestaurantScores.mdf-filen .
    4. Välj OK.
  3. Välj Överträdelser i listrutan Tabell .
  4. Välj RiskCategory i listrutan Kolumn för att förutsäga (etikett).
  5. Lämna standardvalen i Avancerade dataalternativ.
  6. Klicka på knappen Nästa steg för att gå till träningssteget i Model Builder.

Träna modellen

Den maskininlärningsuppgift som används för att träna problemklassificeringsmodellen i den här självstudien är multiklassklassificering. Under modellträningsprocessen tränar Model Builder separata modeller med olika klassificeringsalgoritmer och inställningar för flera klasser för att hitta den modell som bäst presterande för din datauppsättning.

Den tid som krävs för att modellen ska tränas är proportionell mot mängden data. Model Builder väljer automatiskt ett standardvärde för Tid att träna (sekunder) baserat på datakällans storlek.

  1. Model Builder anger värdet för Tid att träna (sekunder) till 60 sekunder. Med träning under en längre tid kan Model Builder utforska ett större antal algoritmer och en kombination av parametrar på jakt efter den bästa modellen.
  2. Klicka på Starta träning.

Under hela träningsprocessen visas förloppsdata i Training results avsnittet i träningssteget.

  • Status visar slutförandestatus för träningsprocessen.
  • Bästa noggrannhet visar noggrannheten för den modell som hittills har hittats bäst av Model Builder. Högre noggrannhet innebär att modellen förutsägs mer korrekt på testdata.
  • Bästa algoritmen visar namnet på den algoritm med bäst prestanda som model builder hittills har hittat.
  • Den senaste algoritmen visar namnet på den algoritm som senast användes av Model Builder för att träna modellen.

När träningen är klar mbconfig kommer filen att ha den genererade modellen anropad RestaurantViolationsPrediction.zip efter träningen och två C#-filer med den:

  • RestaurantViolationsPrediction.consumption.cs: Den här filen har en offentlig metod som läser in modellen och skapar en förutsägelsemotor med den och returnerar förutsägelsen.
  • RestaurantViolationsPrediction.training.cs: Den här filen består av den träningspipeline som Model Builder kom på för att skapa den bästa modellen, inklusive alla hyperparametrar som den använde.

Klicka på knappen Nästa steg för att gå till utvärderingssteget.

Utvärdera modellen

Resultatet av träningssteget blir en modell som har bästa prestanda. I utvärderingssteget i verktyget Model Builder i avsnittet Bästa modell innehåller den algoritm som används av modellen med bäst prestanda i modellposten tillsammans med mått för modellen i Noggrannhet.

I fönstret Utdata i Visual Studio finns det dessutom en sammanfattningstabell som innehåller de översta modellerna och deras mått.

I det här avsnittet kan du också testa din modell genom att utföra en enda förutsägelse. Den erbjuder textrutor för att fylla i värden och du kan klicka på knappen Förutsäga för att få en förutsägelse från den bästa modellen. Som standard fylls detta i av en slumpmässig rad i datauppsättningen.

(Valfritt) Använda modellen

Det här steget innehåller projektmallar som du kan använda för att använda modellen. Det här steget är valfritt och du kan välja den metod som bäst passar dina behov för hur modellen ska hanteras.

  • Konsolapp
  • Webb-API

Konsolapp

När du lägger till en konsolapp i din lösning uppmanas du att namnge projektet.

  1. Ge konsolprojektet namnet RestaurantViolationsPrediction_Console.

  2. Klicka på Lägg till i lösning för att lägga till projektet i den aktuella lösningen.

  3. Kör appen.

    Utdata som genereras av programmet bör se ut ungefär som kodfragmentet nedan:

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

Webb-API

När du lägger till ett webb-API i din lösning uppmanas du att namnge projektet.

  1. Ge webb-API-projektet namnet RestaurantViolationsPrediction_API.

  2. Klicka på Lägg till i lösning* för att lägga till projektet i den aktuella lösningen.

  3. Kör appen.

  4. Öppna PowerShell och ange följande kod där PORT är den port som programmet lyssnar på.

    $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. Om det lyckas bör utdata se ut ungefär som texten nedan. Utdata har den förväntade RiskKategorin som Måttlig risk och har poängen för var och en av indataetiketterna – låg risk, hög risk och måttlig risk.

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

Grattis! Du har skapat en maskininlärningsmodell för att kategorisera risken för hälsoöverträdelser med hjälp av Model Builder. Du hittar källkoden för den här självstudien på GitHub-lagringsplatsen dotnet/machinelearning-samples .

Ytterligare resurser

Mer information om ämnen som nämns i den här självstudien finns i följande resurser: