Självstudie: Förutsäga priser med regression med Model Builder
Lär dig hur du använder ML.NET Model Builder för att skapa en regressionsmodell för att förutsäga priser. .NET-konsolappen som du utvecklar i den här självstudien förutsäger taxipriser baserat på historiska data om taxipriser i New York.
Prisförutsägelsemallen Model Builder kan användas för alla scenarier som kräver ett numeriskt förutsägelsevärde. Exempelscenarier är: förutsägelse av huspriser, förutsägelse av efterfrågan och försäljningsprognoser.
I den här guiden får du lära dig att:
- Förbereda och förstå data
- Skapa en model builder-konfigurationsfil
- Välj ett scenario
- Läsa in data
- 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.
Skapa ett konsolprogram
- Skapa ett C# .NET Core-konsolprogram med namnet "TaxiFarePrediction". Kontrollera att Placera lösningen och projektet i samma katalog är avmarkerat (VS 2019).
Förbereda och förstå data
Skapa en katalog med namnet Data i projektet för att lagra datauppsättningsfilerna.
Datauppsättningen som används för att träna och utvärdera maskininlärningsmodellen kommer ursprungligen från datauppsättningen NYC TLC Taxi Trip.
Om du vill ladda ned datauppsättningen går du till nedladdningslänkentaxi-fare-train.csv.
När sidan läses in högerklickar du var som helst på sidan och väljer Spara som.
Använd dialogrutan Spara som för att spara filen i mappen Data som du skapade i föregående steg.
I Solution Explorer högerklickar du på filentaxi-fare-train.csv och väljer Egenskaper. Under Avancerat ändrar du värdet för Kopiera till utdatakatalog till Kopiera om nyare.
Varje rad i datauppsättningen taxi-fare-train.csv
innehåller information om resor som görs av en taxi.
Öppna datauppsättningentaxi-fare-train.csv
Den angivna datauppsättningen innehåller följande kolumner:
- vendor_id: ID:t för taxileverantören är en funktion.
- rate_code: Taxiresans pristyp är en funktion.
- passenger_count: Antalet passagerare på resan är en funktion.
- trip_time_in_secs: Hur lång tid resan tog. Du vill förutsäga priset för resan innan resan är klar. I det ögonblicket vet du inte hur lång tid resan skulle ta. Därför är restiden inte en funktion och du utesluter den här kolumnen från modellen.
- trip_distance: Resans avstånd är en funktion.
- payment_type: Betalningsmetoden (kontanter eller kreditkort) är en funktion.
- fare_amount: Det totala taxipriset som betalas är etiketten.
label
är den kolumn som du vill förutsäga. När du utför en regressionsuppgift är målet att förutsäga ett numeriskt värde. I det här scenariot med prisförutsägelser förutsägs kostnaden för en taxiresa. Därför är fare_amount etiketten. De identifierade features
är de indata som du ger modellen för att förutsäga label
. I det här fallet används resten av kolumnerna med undantag för trip_time_in_secs som funktioner eller indata för att förutsäga prisbeloppet.
Skapa model builder-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.
- I Solution Explorer högerklickar du på projektet TaxiFarePrediction och väljer Lägg till>maskininlärningsmodell....
- Ge projektet namnet
mbconfig
TaxiFarePrediction och klicka på knappen Lägg till .
Välj ett scenario
För att träna din modell måste du välja från listan över tillgängliga maskininlärningsscenarier som tillhandahålls av Model Builder. I det här fallet är Value prediction
scenariot .
- I scenariosteget i verktyget Model Builder väljer du Scenario för värdeförutsägelse .
Välj miljön
Model Builder kan köra träningen i olika miljöer beroende på vilket scenario som valdes.
- Bekräfta att objektet
Local (CPU)
är markerat och klicka på knappen Nästa steg .
Läsa in data
Model Builder accepterar data från två källor, en SQL Server-databas eller en lokal fil i csv- eller tsv-format.
- I datasteget i verktyget Model Builder väljer du Arkiv från valet av datakällatyp.
- Välj knappen Bläddra bredvid textrutan och använd Utforskaren för att bläddra och välja taxi-fare-test.csv i katalogen Data
- Välj fare_amount i listrutan Kolumn för att förutsäga (etikett).
- Klicka på länken Avancerade dataalternativ .
- På fliken Kolumninställningar väljer du listrutan Syfte för kolumnen trip_time_in_secs och väljer Ignorera för att exkludera den som en funktion under träningen. Klicka på knappen Spara för att stänga dialogrutan.
- Klicka på knappen Nästa steg .
Träna modellen
Den maskininlärningsuppgift som används för att träna prisförutsägelsemodellen i den här självstudien är regression. Under modellträningsprocessen tränar Model Builder separata modeller med olika regressionsalgoritmer och inställningar för att hitta den bäst presterande modellen för din datauppsättning.
Den tid som krävs för att modellen ska tränas står i proportion till mängden data. Model Builder väljer automatiskt ett standardvärde för Tid att träna (sekunder) baserat på datakällans storlek.
- Lämna standardvärdet som är för Tid att träna (sekunder) om du inte föredrar att träna under en längre tid.
- Välj 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 med bäst prestanda som model builder har hittat hittills. Högre noggrannhet innebär att modellen förutsägs mer korrekt på testdata.
- Den bästa algoritmen visar namnet på den algoritm med bäst prestanda som har hittats 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 mbconfig
anropas den genererade modellen TaxiFarePrediction.zip
efter träningen och två C#-filer med den:
- TaxiFare.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.
- TaxiFare.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 alla 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 algoritmen som används av den bäst presterande modellen i modellposten tillsammans med mått för den modellen i RSquared.
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. Den 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.
Om du inte är nöjd med dina noggrannhetsmått är några enkla sätt att försöka förbättra modellens noggrannhet att öka tiden för att träna modellen eller använda mer data. Annars klickar du på Nästa steg för att gå till förbrukningssteget.
(Valfritt) Använda 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.
Ge konsolprojektet namnet TaxiFare_Console.
Klicka på Lägg till i lösning för att lägga till projektet i den aktuella lösningen.
Kör appen.
Utdata som genereras av programmet bör se ut ungefär som kodfragmentet nedan:
Predicted Fare: 15.020833
Webb-API
När du lägger till ett webb-API i din lösning uppmanas du att namnge projektet.
Ge webb-API-projektet namnet TaxiFare_API.
Klicka på Lägg till i lösning* för att lägga till projektet i den aktuella lösningen.
Kör appen.
Öppna PowerShell och ange följande kod där PORT är den port som programmet lyssnar på.
$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"
Om det lyckas bör utdata se ut ungefär som texten nedan:
score ----- 15.020833
Nästa steg
I den här självstudiekursen lärde du dig att:
- Förbereda och förstå data
- Välj ett scenario
- Läsa in data
- Träna modellen
- Utvärdera modellen
- Använda modellen för förutsägelser
Ytterligare resurser
Mer information om ämnen som nämns i den här självstudien finns i följande resurser: