Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Meer informatie over het bouwen van een classificatiemodel met meerdere klassen met behulp van Model Builder om het risiconiveau van restaurantschendingen te categoriseren die tijdens gezondheidsinspecties zijn gevonden.
In deze handleiding leer je hoe je:
- De gegevens voorbereiden en begrijpen
- Een configuratiebestand voor Model Builder maken
- Een scenario kiezen
- Gegevens laden uit een database
- Het model trainen
- Het model evalueren
- Het model gebruiken voor voorspellingen
Vereiste voorwaarden
Ga voor een lijst met vereisten en installatie-instructies naar de installatiehandleiding van Model Builder.
Overzicht van classificatie met meerdere klassen van Model Builder
In dit voorbeeld wordt een C#-consoletoepassing gemaakt die het risico op gezondheidsinbreuken categoriseert met een machine learning-model, gebouwd met Model Builder. U vindt de broncode voor deze zelfstudie in de GitHub-opslagplaats dotnet/machinelearning-samples .
Een consoletoepassing maken
Maak een C#-consoletoepassing met de naam 'RestaurantViolations'.
De gegevens voorbereiden en begrijpen
De gegevensset die wordt gebruikt voor het trainen en evalueren van het machine learning-model is oorspronkelijk afkomstig van het San Francisco Department of Public Health Restaurant Safety Scores. Voor het gemak is de gegevensset ingekort om alleen de kolommen op te nemen die relevant zijn om het model te trainen en voorspellingen te doen. 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 gezondheidsafdeling en een risicoanalyse van de bedreiging die deze schendingen voor de volksgezondheid en veiligheid vormen.
| Inspectietype | SchendingBeschrijving | RiskCategory |
|---|---|---|
| Routine - Niet-gepland | Onvoldoende schoongemaakte of opgeschoonde contactoppervlakken van voedsel | Gemiddeld risico |
| Nieuw eigendom | Hoog risico op ongedierteplaag | Hoog risico |
| Routinewerk - Ongepland | Reinigingsdoeken niet schoon of goed opgeslagen of ontoereikende reinigingsmiddel | Laag risico |
- InspectionType: het type inspectie. Dit kan een eerste inspectie zijn voor een nieuwe inrichting, een routineinspectie, een klachtinspectie en vele andere typen.
- ViolationDescription: een beschrijving van de schending die tijdens de inspectie is aangetroffen.
- RiskCategory: de ernst van de risico's die een schending vormt voor de volksgezondheid en veiligheid.
De label 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 de ernst van de schending toegewezen aan de waarde van laag, gemiddeld of hoog risico. Daarom is riskcategory het label. Dit features zijn de invoer die u het model geeft om het labelte voorspellen. In dit geval worden de 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 bestand mbconfig houdt alles bij wat u in Model Builder doet, zodat u de sessie opnieuw kunt openen.
- Klik in Solution Explorer met de rechtermuisknop op het project RestaurantViolations en selecteerMachine Learning-modeltoevoegen>.
- Noem het
mbconfigproject RestaurantViolationsPrediction en klik op de knop Toevoegen .
Een scenario kiezen
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.
- Voor dit voorbeeld is de taak classificatie met meerdere klassen. Selecteer in de stap Scenario van Model Builder het scenario voor gegevensclassificatie .
De gegevens laden
Model Builder accepteert gegevens uit een SQL Server-database of een lokaal bestand in csv, tsvof txt indeling.
- Selecteer SQL Server in de gegevensstap van het hulpprogramma Model Builder in de selectie van het gegevensbrontype.
- Selecteer de knop Gegevensbron kiezen .
- Selecteer In het dialoogvenster Gegevensbron kiezen microsoft SQL Server-databasebestand.
- Schakel het selectievakje Altijd deze selectie gebruiken uit en klik op Doorgaan.
- Selecteer Bladeren in het dialoogvenster Verbindingseigenschappen en selecteer het gedownloade RestaurantScores.mdf-bestand.
- Kies OK.
- Kies Schendingen in de vervolgkeuzelijst Tabel .
- Kies RiskCategory in de vervolgkeuzelijst Kolom om te voorspellen (Label).
- Laat de standaardselecties in Geavanceerde gegevensopties staan.
- Klik op de knop Volgende stap om naar de stap Train in Model Builder te gaan.
Het model trainen
De machine learning-taak die wordt gebruikt om het classificatiemodel voor problemen in deze zelfstudie 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 nodig is om het model 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.
- Model Builder stelt de waarde van Tijd in om (seconden) te trainen (seconden) 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.
- Klik op Training starten.
Tijdens het trainingsproces worden de voortgangsgegevens weergegeven in het Training results gedeelte 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 is gevonden door Model Builder. Een hogere nauwkeurigheid betekent dat het model correcter is voorspeld op testgegevens.
- Het beste algoritme geeft de naam weer van het best presterende algoritme dat tot nu toe is gevonden door Model Builder.
- Het laatste algoritme geeft de naam weer van het algoritme dat het laatst is gebruikt door Model Builder om het model te trainen.
Zodra de training is voltooid, heeft het mbconfig bestand het gegenereerde model dat wordt aangeroepen RestaurantViolationsPrediction.zip na de training en twee C#-bestanden ermee:
- RestaurantViolationsPrediction.consumption.cs: dit bestand heeft een openbare methode waarmee het model wordt geladen en een voorspellingsengine wordt gemaakt en de voorspelling wordt geretourneerd.
- RestaurantViolationsPrediction.training.cs: Dit bestand bestaat uit de trainingspijplijn waarmee Model Builder het beste model heeft ontwikkeld, inclusief eventuele hyperparameters die het gebruikte.
Klik op de knop Volgende stap om naar de evaluatiestap te gaan.
Het model evalueren
Het resultaat van de trainingsstap is één model dat de beste prestaties had. In de evaluatiestap van het hulpprogramma Modelbouwer bevat de sectie Beste model het algoritme dat door het best presterende model wordt gebruikt, samen met de metrische gegevens voor dat model onder 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 uw model ook 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. Dit wordt standaard 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 kiezen welke methode het beste past bij uw behoeften voor het leveren van het model.
- Console-applicatie
- Web-API
Console-applicatie
Wanneer u een console-app aan uw oplossing toevoegt, wordt u gevraagd het project een naam te geven.
Geef het consoleproject de naam RestaurantViolationsPrediction_Console.
Klik op Toevoegen aan de oplossing om het project toe te voegen aan uw huidige oplossing.
Voer de toepassing uit.
De uitvoer die door het programma wordt gegenereerd, moet er ongeveer als volgt uitzien:
InspectionType: Routine - Unscheduled ViolationDescription: Moderate risk food holding temperature Predicted RiskCategory: Moderate Risk
Web-API
Wanneer u een web-API aan uw oplossing toevoegt, wordt u gevraagd het project een naam te geven.
Geef het web-API-project een naam RestaurantViolationsPrediction_API.
Klik op Toevoegen aan oplossing* om het project toe te voegen aan uw huidige oplossing.
Voer de toepassing uit.
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"Als dit lukt, moet de uitvoer er ongeveer uitzien als in 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 gebouwd om het risico op gezondheidsschendingen te categoriseren met behulp van Model Builder. U vindt de broncode voor deze zelfstudie in de GitHub-opslagplaats dotnet/machinelearning-samples .
Aanvullende bronnen
Ga naar de volgende bronnen voor meer informatie over onderwerpen die in deze zelfstudie worden genoemd: