Dela via


Självstudie: Klassificera allvarlighetsgraden för brott mot restauranghälsokrav med hjälp av 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 tutorialen lär du dig följande:

  • Förbereda och förstå data
  • Skapa en modell 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

Förutsättningar

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#-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

Skapa ett C#-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 datamängden komprimerats så att den endast innehåller de 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 datamängden.

Ladda ned datamängden 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älsoavdelningen och en riskbedömning av det hot som dessa överträdelser utgör för folkhälsan och säkerheten.

Inspektionstyp Överträdelsebeskrivning RiskCategory
Rutin – oplanerad Otillräckligt rengjorda eller sanerade kontaktytor för livsmedel Måttlig risk
Nytt ägarskap Angrepp av ohyrer med hög risk Hög risk
Rutin – oplanerad Torktrasor som inte är rena, korrekt lagrade eller otillräckligt desinfektionsmedel 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 överträdelsens allvarlighetsgrad värdet låg, måttlig eller hög risk. RiskCategory är därför 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 modellverktygets konfigurationsfil

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. Högerklicka på projektet RestaurantViolations i Solution Explorer och välj Lägg till>maskininlärningsmodell.
  2. Döp projektet till 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 klassificering med flera klasser. I scenariosteget i Model Builder väljer du scenariot Dataklassificering .

Ladda 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älltyp.
  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 filen RestaurantScores.mdf .
    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 fungerar bäst 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 presterat bäst och hittats av Model Builder. Högre noggrannhet innebär att modellen förutsägs mer korrekt på testdata.
  • Den bästa algoritmen visar namnet på den algoritm som utförts bäst av Model Builder hittills.
  • 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 kommer mbconfig filen att ha den genererade modellen kallad RestaurantViolationsPrediction.zip efter träningen och två C#-filer tillsammans 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 träningspipelinen som Model Builder kom på för att skapa den bästa modellen, inklusive eventuella 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 hade 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. Det kommer att erbjuda 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) Konsumera 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 programmet.

    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 programmet.

  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: