Share via


Zelfstudie: De ernst van schendingen van de restaurantstatus classificeren met Model Builder

Meer informatie over het bouwen van een classificatiemodel met meerdere klassen met Behulp van Model Builder om het risiconiveau van restaurantschendingen te categoriseren dat tijdens statusinspecties is gevonden.

In deze zelfstudie leert u het volgende:

  • De gegevens voorbereiden en begrijpen
  • Een Model Builder-configuratiebestand maken
  • Een scenario kiezen
  • Gegevens uit een database laden
  • Het model trainen
  • Het model evalueren
  • Het model gebruiken voor voorspellingen

Vereisten

Ga naar de installatiehandleiding voor Model Builder voor een lijst met vereisten en installatie-instructies.

Overzicht van classificatie met meerdere klassen van Model Builder

In dit voorbeeld wordt een C# .NET Core-consoletoepassing gemaakt die het risico van statusschendingen categoriseert met behulp van een machine learning-model dat is gebouwd met Model Builder. U vindt de broncode voor deze zelfstudie in de GitHub-opslagplaats dotnet/machinelearning-samples .

Een consoletoepassing maken

  1. Maak een C# .NET Core-consoletoepassing met de naam RestaurantViolations.

De gegevens voorbereiden en begrijpen

De gegevensset die wordt gebruikt om het machine learning-model te trainen en te evalueren, is oorspronkelijk afkomstig van de veiligheidsscores van het San Francisco Department of Public Health Restaurant. Voor het gemak is de gegevensset ingekort tot alleen de kolommen die relevant zijn voor het trainen van het model en het doen van voorspellingen. Ga naar de volgende website voor meer informatie over de gegevensset.

Download de gegevensset Restaurant Safety Scores en pak deze uit.

Elke rij in de gegevensset bevat informatie over schendingen die zijn waargenomen tijdens een inspectie van de Health Department en een risicoanalyse van de bedreiging die deze schendingen vormen voor de volksgezondheid en veiligheid.

InspectionType ViolationDescription RiskCategory
Routine - Ongepland Onvoldoende gereinigde of opgeschoonde oppervlakken voor contact met voedsel Gemiddeld risico
Nieuw eigendom Ongedierteplaag met hoog risico Hoog risico
Routine - Ongepland Veegdoeken zijn niet schoon of goed opgeslagen of onvoldoende ontsmettingsmiddel Laag risico
  • InspectionType: het type inspectie. Dit kan een eerste inspectie zijn voor een nieuwe inrichting, een routineinspectie, een klachteninspectie en vele andere typen.
  • ViolationDescription: een beschrijving van de overtreding die tijdens de inspectie is gevonden.
  • RiskCategory: de ernst van het risico dat een schending vormt voor de volksgezondheid en veiligheid.

De label is de kolom die u wilt voorspellen. Bij het uitvoeren van een classificatietaak is het doel om een categorie (tekst of numeriek) toe te wijzen. In dit classificatiescenario wordt aan de ernst van de schending de waarde laag, gemiddeld of hoog risico toegewezen. Daarom is de RiskCategory het label. De features zijn de invoer die u het model geeft om de labelte voorspellen. In dit geval worden het InspectionType en ViolationDescription gebruikt als functies of invoer om de RiskCategory te voorspellen.

Configuratiebestand voor Model Builder maken

Wanneer u Model Builder voor het eerst toevoegt aan de oplossing, wordt u gevraagd een mbconfig bestand te maken. Het mbconfig bestand houdt alles bij wat u in Model builder doet, zodat u de sessie opnieuw kunt openen.

  1. Klik in Solution Explorer met de rechtermuisknop op het project RestaurantViolations en selecteerMachine Learning-modeltoevoegen>....
  2. Noem het mbconfig project RestaurantViolationsPrediction en klik op de knop Toevoegen .

Een scenario kiezen

Scenarioscherm voor modelbouwer

Als u uw model wilt trainen, selecteert u in de lijst met beschikbare machine learning-scenario's van Model Builder. In dit geval is het scenario Gegevensclassificatie.

  1. Voor dit voorbeeld is de taak classificatie met meerdere klassen. Selecteer in de stap Scenario van Model Builder het scenario Gegevensclassificatie .

De gegevens laden

Model Builder accepteert gegevens uit een SQL Server database of een lokaal bestand in csvde indeling , tsvoftxt.

  1. Selecteer in de gegevensstap van het hulpprogramma Modelbouwer SQL Server in de gegevensbrontypeselectie.
  2. Selecteer de knop Gegevensbron kiezen .
    1. Selecteer microsoft SQL Server databasebestand in het dialoogvenster Gegevensbron kiezen.
    2. Schakel het selectievakje Altijd deze selectie gebruiken uit en klik op Doorgaan.
    3. Selecteer in het dialoogvenster Verbindingseigenschappende optie Bladeren en selecteer het gedownloade bestand RestaurantScores.mdf .
    4. Selecteer OK.
  3. Kies Schendingen in de vervolgkeuzelijst Tabel .
  4. Kies RiskCategory in de kolom om de vervolgkeuzelijst (Label) te voorspellen .
  5. Laat de standaardselecties staan bij Geavanceerde gegevensopties.
  6. Klik op de knop Volgende stap om naar de trainstap in Model Builder te gaan.

Het model trainen

De machine learning-taak die in deze zelfstudie wordt gebruikt om het probleemclassificatiemodel te trainen, is classificatie met meerdere klassen. Tijdens het modeltrainingsproces traint Model Builder afzonderlijke modellen met behulp van verschillende classificatiealgoritmen en instellingen voor meerdere klassen om het best presterende model voor uw gegevensset te vinden.

De tijd die het model nodig heeft om te trainen, is evenredig met de hoeveelheid gegevens. Model builder selecteert automatisch een standaardwaarde voor Tijd om te trainen (seconden) op basis van de grootte van uw gegevensbron.

  1. Model builder stelt de waarde van Tijd om te trainen (seconden) in op 60 seconden. Met training voor een langere periode kan Model Builder een groter aantal algoritmen en een combinatie van parameters verkennen op zoek naar het beste model.
  2. Klik op Training starten.

Tijdens het trainingsproces worden voortgangsgegevens weergegeven in de Training results sectie van de treinstap.

  • Status geeft de voltooiingsstatus van het trainingsproces weer.
  • De beste nauwkeurigheid geeft de nauwkeurigheid weer van het best presterende model dat tot nu toe door Model Builder is gevonden. Hogere nauwkeurigheid betekent dat het model correcter is voorspeld op basis van testgegevens.
  • Beste algoritme geeft de naam weer van het best presterende algoritme dat tot nu toe door Model Builder is gevonden.
  • Laatste algoritme geeft de naam weer van het algoritme dat het meest recent door Model Builder is gebruikt om het model te trainen.

Zodra de training is voltooid, bevat het mbconfig bestand het gegenereerde model met de naam RestaurantViolationsPrediction.zip na de training en twee C#-bestanden:

  • RestaurantViolationsPrediction.consumption.cs: dit bestand heeft een openbare methode waarmee het model wordt geladen en ermee een voorspellingsengine wordt gemaakt en de voorspelling wordt geretourneerd.
  • RestaurantViolationsPrediction.training.cs: Dit bestand bestaat uit de trainingspijplijn die modelbouwer heeft bedacht om het beste model te bouwen, inclusief eventuele hyperparameters die zijn gebruikt.

Klik op de knop Volgende stap om naar de evaluatiestap te gaan.

Het model evalueren

Het resultaat van de trainingsstap is één model met de beste prestaties. In de evaluatiestap van het hulpprogramma Modelbouwer bevat in de sectie Beste model het algoritme dat wordt gebruikt door het best presterende model in de vermelding Model , samen met metrische gegevens voor dat model in Nauwkeurigheid.

Daarnaast ziet u in het venster Uitvoer van Visual Studio een overzichtstabel met de belangrijkste modellen en de bijbehorende metrische gegevens.

In deze sectie kunt u ook uw model testen door één voorspelling uit te voeren. Het bevat tekstvakken om waarden in te vullen en u kunt op de knop Voorspellen klikken om een voorspelling te krijgen van het beste model. Standaard wordt dit ingevuld door een willekeurige rij in uw gegevensset.

(Optioneel) Het model gebruiken

Deze stap bevat projectsjablonen die u kunt gebruiken om het model te gebruiken. Deze stap is optioneel en u kunt de methode kiezen die het beste past bij uw behoeften voor het leveren van het model.

  • Console-app
  • Web-API

Console-app

Wanneer u een console-app toevoegt aan uw oplossing, wordt u gevraagd het project een naam te geven.

  1. Noem het consoleproject RestaurantViolationsPrediction_Console.

  2. Klik op Toevoegen aan oplossing om het project toe te voegen aan uw huidige oplossing.

  3. Voer de toepassing uit.

    De uitvoer die door het programma wordt gegenereerd, ziet er ongeveer als volgt uit:

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

Web-API

Wanneer u een web-API toevoegt aan uw oplossing, wordt u gevraagd om het project een naam te geven.

  1. Geef het web-API-project de naam RestaurantViolationsPrediction_API.

  2. Klik op Toevoegen aan oplossing* om het project toe te voegen aan uw huidige oplossing.

  3. Voer de toepassing uit.

  4. Open PowerShell en voer de volgende code in, waarbij PORT de poort is waarop uw toepassing luistert.

    $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. Als dit lukt, moet de uitvoer er ongeveer uitzien als de onderstaande tekst. De uitvoer heeft de voorspelde RiskCategory als Gemiddeld risico en heeft de scores van elk van de invoerlabels : Laag risico, Hoog risico en Gemiddeld risico.

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

Gefeliciteerd U hebt een machine learning-model gemaakt om het risico van statusschendingen te categoriseren met Behulp van Model Builder. U vindt de broncode voor deze zelfstudie in de GitHub-opslagplaats dotnet/machinelearning-samples .

Aanvullende resources

Ga naar de volgende bronnen voor meer informatie over onderwerpen die in deze zelfstudie worden genoemd: