Kurz: Predikce cen pomocí regrese pomocí Tvůrce modelů

Naučte se používat ML.NET Model Builder k vytvoření regresního modelu pro predikci cen. Konzolová aplikace .NET, kterou vyvíjíte v tomto kurzu, předpovídá ceny jízdy taxi na základě historických dat o jízdě v newyorské taxislužbě.

Šablonu predikce cen Tvůrce modelů lze použít pro jakýkoli scénář vyžadující číselnou hodnotu předpovědi. Mezi příklady scénářů patří predikce cen domu, předpověď poptávky a prognózování prodeje.

V tomto kurzu se naučíte:

  • Příprava a pochopení dat
  • Vytvoření konfiguračního souboru Tvůrce modelů
  • Volba scénáře
  • Načtení dat
  • Trénování modelu
  • Vyhodnocení modelu
  • Použití modelu pro předpovědi

Požadavky

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

Vytvoření konzolové aplikace

  1. Vytvořte konzolovou aplikaci C# .NET Core s názvem TaxiFarePrediction. Ujistěte se, že není zaškrtnutá možnostUmístit řešení a projekt do stejného adresáře (VS 2019).

Příprava a pochopení dat

  1. Vytvořte v projektu adresář s názvem Data pro ukládání souborů datové sady.

  2. Sada dat použitá k trénování a vyhodnocení modelu strojového učení pochází původně ze sady dat NYC TLC Taxi Trip.

    1. Pokud chcete sadu dat stáhnout, přejděte na odkaz ke staženítaxi-fare-train.csv.

    2. Po načtení stránky klikněte pravým tlačítkem na libovolné místo na stránce a vyberte Uložit jako.

    3. Pomocí dialogového okna Uložit jako uložte soubor do složky Data, kterou jste vytvořili v předchozím kroku.

  3. V Průzkumník řešení klikněte pravým tlačítkem na soubor taxi-fare-train.csv a vyberte Vlastnosti. V části Upřesnit změňte hodnotu Kopírovat do výstupního adresáře na Kopírovat, pokud je novější.

Každý řádek v taxi-fare-train.csv sadě dat obsahuje podrobnosti o cestách taxislužby.

  1. Otevření datové sadytaxi-fare-train.csv

    Poskytnutá datová sada obsahuje následující sloupce:

    • vendor_id: ID dodavatele taxislužby je funkce.
    • rate_code: Typ sazby jízdy taxíkem je funkce.
    • passenger_count: Počet cestujících na cestě je funkce.
    • trip_time_in_secs: Doba, po kterou cesta trvala. Chcete předpovědět jízdu před dokončením cesty. V tu chvíli nevíte, jak dlouho by cesta zabrala. Proto čas cesty není funkcí a tento sloupec z modelu vyloučíte.
    • trip_distance: Vzdálenost cesty je funkce.
    • payment_type: Způsob platby (hotovost nebo platební karta) je funkce.
    • fare_amount: Celková zaplacená taxislužba je štítek.

Jedná se label o sloupec, který chcete předpovědět. Při provádění regresní úlohy je cílem předpovědět číselnou hodnotu. V tomto scénáři predikce ceny se predikují náklady na jízdu taxíkem. Proto fare_amount je popisek. Identifikované features jsou vstupy, které modelu poskytnete k predikci label. V tomto případě se zbytek sloupců s výjimkou trip_time_in_secs používá jako funkce nebo vstupy k predikci ceny jízdného.

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

Při prvním přidání Tvůrce modelů do řešení vás vyzve k vytvoření mbconfig souboru. Soubor mbconfig sleduje vše, co v Tvůrci modelů děláte, abyste mohli znovu otevřít relaci.

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

Volba scénáře

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

Pokud chcete model vytrénovat, musíte vybrat ze seznamu dostupných scénářů strojového učení, které poskytuje Tvůrce modelů. V tomto případě se Value predictionjedná o scénář .

  1. V kroku scénáře nástroje Tvůrce modelů vyberte Scénář predikce hodnoty .

Vyberte prostředí

Tvůrce modelů může v závislosti na vybraném scénáři spustit trénování v různých prostředích.

  1. Potvrďte, že Local (CPU) je položka vybraná, a klikněte na tlačítko Další krok .

Načtení dat

Model Builder přijímá data ze dvou zdrojů, z databáze SQL Server nebo z místního souboru ve formátu CSV nebo tsv.

  1. V kroku dat nástroje Tvůrce modelů vyberte soubor z výběru typu zdroje dat.
  2. Vyberte tlačítko Procházet vedle textového pole a pomocí Průzkumník souborů procházejte a vyberte taxi-fare-test.csv v adresáři Data.
  3. V rozevíracím seznamu Sloupec k predikci (Popisek) zvolte fare_amount.
  4. Klikněte na odkaz Upřesnit možnosti dat .
  5. Na kartě Nastavení sloupce vyberte rozevírací seznam Účel pro sloupec trip_time_in_secs a výběrem možnosti Ignorovat ho během trénování vyloučíte jako funkci. Kliknutím na tlačítko Uložit zavřete dialogové okno.
  6. Klikněte na tlačítko Další krok .

Trénování modelu

Úloha strojového učení použitá k trénování modelu predikce cen v tomto kurzu je regrese. Během procesu trénování modelu Model Builder trénuje samostatné modely pomocí různých regresních algoritmů a nastavení, aby našel nejvýkonnější model 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 Pro čas trénování (sekundy) na základě velikosti vašeho zdroje dat.

  1. Pokud nechcete trénovat delší dobu, ponechte výchozí hodnotu jako Čas na trénování (sekundy).
  2. Vyberte Zahájit školení.

V průběhu trénovacího procesu 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ů dosud 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ů dosud provedl.
  • Poslední algoritmus zobrazí 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 TaxiFarePrediction.zip po trénování a dva soubory jazyka C#:

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

Kliknutím na tlačítko Další krok přejděte na krok 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 RSquared.

Kromě toho se v okně Výstup sady Visual Studio zobrazí souhrnná tabulka obsahující nejvyšší 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 ( Predikovat ) a získat předpověď z nejlepšího modelu. Ve výchozím nastavení se vyplní náhodným řádkem v datové sadě.

Pokud nejste spokojení s metrikami přesnosti, je jedním ze snadných způsobů, jak vyzkoušet a zlepšit přesnost modelu, prodloužení doby na trénování modelu nebo použití více dat. V opačném případě klikněte na Další krok a přejděte na krok spotřebovávat.

(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, jak model obsloužíte.

  • Konzolová aplikace
  • 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 TaxiFare_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:

    Predicted Fare: 15.020833
    

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 TaxiFare_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 = @{
        Vendor_id="CMT"
        Rate_code=1.0
        Passenger_count=1.0
        Trip_distance=3.8
        Payment_type="CRD"
    }
    
    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:

    score
    -----
    15.020833
    

Další kroky

V tomto kurzu jste se naučili:

  • Příprava dat a jejich pochopení
  • Volba scénáře
  • Načtení dat
  • Trénování modelu
  • Vyhodnocení modelu
  • Použití modelu pro predikce

Další materiály

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