Sdílet prostřednictvím


Kurz: Klasifikace závažnosti porušení stavu restaurace pomocí Model Builderu

Zjistěte, jak pomocí Tvůrce modelů vytvořit klasifikační model s více třídami, abyste mohli kategorizovat úroveň rizika porušení předpisů v restauraci zjištěných během kontrol stavu.

V tomto kurzu se naučíte:

  • Příprava dat a jejich pochopení
  • Vytvoření konfiguračního souboru Tvůrce modelů
  • Volba scénáře
  • Načtení dat z databáze
  • Trénování modelu
  • Vyhodnocení modelu
  • Použití modelu pro predikce

Požadavky

Seznam požadavků a pokyny k instalaci najdete v průvodci instalací Model Builderu.

Přehled klasifikace více tříd v Model Builderu

Tato ukázka vytvoří konzolovou aplikaci c# .NET Core, která kategorizuje riziko narušení zdraví pomocí modelu strojového učení vytvořeného pomocí Tvůrce modelů. Zdrojový kód pro tento kurz najdete v úložišti GitHubu dotnet/machinelearning-samples .

Vytvoření konzolové aplikace

  1. Vytvořte konzolovou aplikaci C# .NET Core s názvem "RestaurantViolations".

Příprava dat a jejich pochopení

Datová sada sloužící k trénování a vyhodnocení modelu strojového učení pochází původně ze San Francisca Department of Public Health Restaurant Safety Scores. Pro usnadnění je datová sada zhuštěná tak, aby obsahovala pouze sloupce relevantní pro trénování modelu a vytváření předpovědí. Další informace o datové sadě najdete na následujícím webu.

Stáhněte si datovou sadu Skóre bezpečnosti restaurace a rozbalte ji.

Každý řádek v datové sadě obsahuje informace týkající se porušení pozorovaných během kontroly z ministerstva zdravotnictví a posouzení rizika ohrožení veřejného zdraví a bezpečnosti, které tato porušení představují.

Typ kontroly ViolationDescription RiskCategory
Rutina – nenaplánované Nedostatečně vyčištěné nebo upravené kontaktní plochy potravin Střední riziko
Nové vlastnictví High risk vermin infestation Vysoké riziko
Rutina – nenaplánované Otírání nečistých nebo řádně uložených utěrk nebo nedostatečné sanitizery Nízké riziko
  • InspectionType: typ kontroly. Může se jednat o první kontrolu nové provozovny, pravidelnou inspekci, kontrolu stížnosti a mnoho dalších typů.
  • ViolationDescription: popis porušení nalezeného během kontroly.
  • RiskCategory: závažnost rizika, která porušení představuje pro veřejné zdraví a bezpečnost.

Je label sloupec, který chcete předpovědět. Při provádění úlohy klasifikace je cílem přiřadit kategorii (textovou nebo číselnou). V tomto scénáři klasifikace se závažnosti porušení přiřadí hodnota nízké, střední nebo vysoké riziko. Proto je popisek RiskCategory . Jsou features vstupy, které modelu předpovíte label. V tomto případě se jako funkce nebo vstupy pro predikci RiskCategory používají InspectionType a ViolationDescription.

Vytvoření konfiguračního souboru Tvůrce modelů

Při prvním přidání Tvůrce modelů do řešení se zobrazí výzva k vytvoření mbconfig souboru. Soubor mbconfig uchovává přehled o všem, co v Model Builderu děláte, abyste mohli relaci znovu otevřít.

  1. V Průzkumník řešení klikněte pravým tlačítkem na projekt RestaurantViolations a vyberte Přidat>model strojového učení....
  2. Pojmenujte mbconfig projekt RestaurantViolationsPrediction a klikněte na tlačítko Přidat .

Volba scénáře

Obrazovka scénáře tvůrce modelů

Pokud chcete model vytrénovat, vyberte ze seznamu dostupných scénářů strojového učení, které poskytuje Tvůrce modelů. V tomto případě se jedná o scénář Klasifikace dat.

  1. V této ukázce je úkolem klasifikace s více třídami. V kroku Scénář v Tvůrci modelů vyberte scénář klasifikace dat .

Načtení dat

Model Builder přijímá data z SQL Server databáze nebo místního souboru ve csvformátu , tsvnebo txt .

  1. V datovém kroku nástroje Tvůrce modelů vyberte SQL Server z výběru typu zdroje dat.
  2. Vyberte tlačítko Zvolit zdroj dat .
    1. V dialogovém okně Zvolit zdroj dat vyberte Soubor databáze Microsoft SQL Server.
    2. Zrušte zaškrtnutí políčka Vždy použít tento výběr a klikněte na Pokračovat.
    3. V dialogovém okně Vlastnosti připojení vyberte Procházet a vyberte stažený soubor RestaurantScores.mdf .
    4. Vyberte OK.
  3. V rozevíracím seznamu Tabulka zvolte Porušení.
  4. V rozevíracím seznamu Sloupec chcete predikovat (Label) zvolte RiskCategory.
  5. V části Upřesnit možnosti dat ponechte výchozí výběr.
  6. Kliknutím na tlačítko Další krok přejděte na krok trénování v Tvůrci modelů.

Trénování modelu

Úloha strojového učení použitá k trénování modelu klasifikace problémů v tomto kurzu je klasifikace s více třídami. Během procesu trénování modelu Model Builder trénuje samostatné modely pomocí různých algoritmů a nastavení klasifikace s více třídami, aby našel model s nejlepším výkonem pro vaši datovou sadu.

Doba potřebná k trénování modelu je úměrná množství dat. Tvůrce modelů automaticky vybere výchozí hodnotu trénování (sekundy) na základě velikosti zdroje dat.

  1. Model Builder nastaví hodnotu Doba trénování (sekundy) na 60 sekund. Trénování po delší dobu umožňuje Model Builderu prozkoumat větší počet algoritmů a kombinaci parametrů při hledání nejlepšího modelu.
  2. Klikněte na Spustit trénování.

V průběhu trénování se v části kroku trénování zobrazují Training results údaje o průběhu.

  • Stav zobrazuje stav dokončení procesu trénování.
  • Nejlepší přesnost zobrazuje přesnost modelu s nejlepším výkonem, který tvůrce modelů zatím zjistil. Vyšší přesnost znamená, že model předpověděl na testovacích datech správněji.
  • Nejlepší algoritmus zobrazí název algoritmu s nejlepším výkonem, který tvůrce modelů zatím provedl.
  • Poslední algoritmus zobrazuje název algoritmu, který tvůrce modelů naposledy použil k trénování modelu.

Po dokončení mbconfig trénování bude soubor obsahovat vygenerovaný model s názvem RestaurantViolationsPrediction.zip po trénování a dva soubory jazyka C#:

  • RestaurantViolationsPrediction.consumption.cs: Tento soubor obsahuje veřejnou metodu, která načte model a vytvoří s ním prediktivní modul a vrátí předpověď.
  • RestaurantViolationsPrediction.training.cs: Tento soubor se skládá z trénovacího kanálu, se kterým Model Builder vytvořil nejlepší model, včetně jakýchkoli hyperparametrů, které použil.

Kliknutím na tlačítko Další krok přejděte ke kroku vyhodnocení.

Vyhodnocení modelu

Výsledkem trénovacího kroku bude jeden model, který měl nejlepší výkon. V kroku vyhodnocení nástroje Tvůrce modelů bude v části Nejlepší model obsahovat algoritmus používaný modelem s nejlepším výkonem v položce Model spolu s metrikami pro tento model v části Přesnost.

Kromě toho v okně Výstup sady Visual Studio bude souhrnná tabulka obsahující hlavní modely a jejich metriky.

Tato část vám také umožní otestovat model provedením jedné předpovědi. Nabídne textová pole pro vyplnění hodnot a můžete kliknout na tlačítko Predict ( Předpovědět ) a získat předpověď z nejlepšího modelu. Ve výchozím nastavení se vyplní náhodným řádkem v datové sadě.

(Volitelné) Využití modelu

Tento krok bude obsahovat šablony projektů, které můžete použít k využití modelu. Tento krok je volitelný a můžete zvolit metodu, která nejlépe vyhovuje vašim potřebám, a určit způsob obsluhy modelu.

  • Aplikace konzoly
  • Webové rozhraní API

Aplikace konzoly

Při přidávání konzolové aplikace do řešení se zobrazí výzva k pojmenování projektu.

  1. Projekt konzoly pojmenujte RestaurantViolationsPrediction_Console.

  2. Kliknutím na Přidat do řešení přidejte projekt do aktuálního řešení.

  3. Spusťte aplikaci.

    Výstup vygenerovaný programem by měl vypadat podobně jako následující fragment kódu:

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

Webové rozhraní API

Při přidávání webového rozhraní API do řešení se zobrazí výzva k pojmenování projektu.

  1. Projekt webového rozhraní API pojmenujte RestaurantViolationsPrediction_API.

  2. Kliknutím na Přidat do řešení* přidejte projekt do aktuálního řešení.

  3. Spusťte aplikaci.

  4. Otevřete PowerShell a zadejte následující kód, kde PORT je port, na kterém vaše aplikace naslouchá.

    $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. V případě úspěchu by výstup měl vypadat podobně jako následující text. Výstup obsahuje predikovanou kategorii RiskCategory jako Moderate Risk (Střední riziko ) a má skóre jednotlivých vstupních popisků – Low Risk (Nízké riziko), High Risk (Vysoké riziko) a Moderate Risk (Střední riziko).

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

Gratulujeme! Úspěšně jste vytvořili model strojového učení, který pomocí Tvůrce modelů kategorizuje riziko narušení zdraví. Zdrojový kód pro tento kurz najdete v úložišti GitHubu dotnet/machinelearning-samples .

Další materiály

Další informace o tématech uvedených v tomto kurzu najdete v následujících zdrojích informací: