Zelfstudie: Prijzen voorspellen met behulp van regressie met Model Builder

Meer informatie over het gebruik van ML.NET Model Builder om een regressiemodel te bouwen om prijzen te voorspellen. De .NET-console-app die u in deze zelfstudie ontwikkelt, voorspelt taxitarieven op basis van historische gegevens over taxiritten in New York.

De sjabloon voor prijsvoorspelling van Model Builder kan worden gebruikt voor elk scenario waarvoor een numerieke voorspellingswaarde is vereist. Voorbeelden van scenario's zijn: huizenprijsvoorspelling, vraagvoorspelling en verkoopprognose.

In deze zelfstudie leert u het volgende:

  • De gegevens voorbereiden en begrijpen
  • Een configuratiebestand voor Model Builder maken
  • Een scenario kiezen
  • De gegevens 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.

Een consoletoepassing maken

  1. Maak een C# .NET Core-consoletoepassing met de naam TaxiFarePrediction. Zorg ervoor dat Oplossing en project in dezelfde map plaatsen is uitgeschakeld (VS 2019).

De gegevens voorbereiden en begrijpen

  1. Maak een map met de naam Gegevens in uw project om de gegevenssetbestanden op te slaan.

  2. De gegevensset die wordt gebruikt om het machine learning-model te trainen en te evalueren, is oorspronkelijk afkomstig uit de gegevensset TLC Taxi Trip in NYC.

    1. Als u de gegevensset wilt downloaden, gaat u naar de koppelingtaxi-fare-train.csv downloaden.

    2. Wanneer de pagina wordt geladen, klikt u met de rechtermuisknop ergens op de pagina en selecteert u Opslaan als.

    3. Gebruik het dialoogvenster Opslaan als om het bestand op te slaan in de map Gegevens die u in de vorige stap hebt gemaakt.

  3. Klik in Solution Explorer met de rechtermuisknop op het taxi-fare-train.csv-bestand en selecteer Eigenschappen. Wijzig onder Geavanceerd de waarde van Kopiëren naar uitvoermap inKopiëren indien nieuwer.

Elke rij in de taxi-fare-train.csv gegevensset bevat details van ritten die door een taxi zijn gemaakt.

  1. De taxi-fare-train.csv gegevensset openen

    De opgegeven gegevensset bevat de volgende kolommen:

    • vendor_id: De id van de taxileverancier is een functie.
    • rate_code: Het tarieftype van de taxirit is een functie.
    • passenger_count: Het aantal passagiers op de reis is een kenmerk.
    • trip_time_in_secs: De hoeveelheid tijd die de reis in beslag nam. U wilt het tarief van de reis voorspellen voordat de reis is voltooid. Op dat moment weet je niet hoe lang de reis zou duren. De reistijd is dus geen functie en u sluit deze kolom uit van het model.
    • trip_distance: De afstand van de reis is een functie.
    • payment_type: De betalingswijze (contant of creditcard) is een functie.
    • fare_amount: Het totaal betaalde taxirit is het label.

De label is de kolom die u wilt voorspellen. Bij het uitvoeren van een regressietaak is het doel om een numerieke waarde te voorspellen. In dit scenario voor prijsvoorspelling worden de kosten van een taxirit voorspeld. Daarom is de fare_amount het label. De geïdentificeerde features zijn de invoer die u het model geeft om de labelte voorspellen. In dit geval worden de rest van de kolommen met uitzondering van trip_time_in_secs gebruikt als functies of invoer om het tarief 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 TaxiFarePrediction en selecteerMachine Learning-modeltoevoegen>....
  2. Noem het mbconfig project TaxiFarePrediction en klik op de knop Toevoegen .

Een scenario kiezen

Scenarioscherm voor modelbouwer

Als u uw model wilt trainen, moet u een keuze maken uit de lijst met beschikbare machine learning-scenario's van Model Builder. In dit geval is Value predictionhet scenario .

  1. Selecteer in de scenariostap van het hulpprogramma Modelbouwer de optie Scenario voor waardevoorspelling .

Selecteer de omgeving

Model builder kan de training uitvoeren in verschillende omgevingen, afhankelijk van het scenario dat is geselecteerd.

  1. Controleer of het Local (CPU) item is geselecteerd en klik op de knop Volgende stap .

De gegevens laden

Model builder accepteert gegevens uit twee bronnen, een SQL Server database of een lokaal bestand in CSV- of tsv-indeling.

  1. Selecteer in de gegevensstap van het hulpprogramma Modelbouwer bestand in de selectie van het gegevensbrontype.
  2. Selecteer de knop Bladeren naast het tekstvak en gebruik Bestandenverkenner om te bladeren en de taxi-fare-test.csv in de map Gegevens te selecteren
  3. Kies fare_amount in de vervolgkeuzelijst Kolom om (Label) te voorspellen .
  4. Klik op de koppeling Geavanceerde gegevensopties .
  5. Selecteer op het tabblad Kolominstellingen de vervolgkeuzelijst Doel voor de kolom trip_time_in_secs en selecteer Negeren om deze uit te sluiten als een functie tijdens de training. Klik op de knop Opslaan om het dialoogvenster te sluiten.
  6. Klik op de knop Volgende stap .

Het model trainen

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

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

  1. Laat de standaardwaarde ongewijzigd voor Tijd om te trainen (seconden), tenzij u liever langere tijd traint.
  2. Selecteer 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 wordt 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 laatst 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 TaxiFarePrediction.zip na de training en twee C#-bestanden:

  • TaxiFare.consumption.cs: Dit bestand heeft een openbare methode waarmee het model wordt geladen en ermee een voorspellingsengine wordt gemaakt en de voorspelling wordt geretourneerd.
  • TaxiFare.training.cs: Dit bestand bestaat uit de trainingspijplijn die Model Builder heeft bedacht om het beste model te bouwen, inclusief alle 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, in de sectie Beste model , bevat het algoritme dat wordt gebruikt door het best presterende model in de vermelding Model , samen met metrische gegevens voor dat model in RSquared.

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 biedt 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.

Als u niet tevreden bent met uw metrische gegevens voor nauwkeurigheid, kunt u de nauwkeurigheid van het model eenvoudig proberen te verbeteren door de hoeveelheid tijd te vergroten om het model te trainen of meer gegevens te gebruiken. Klik anders op Volgende stap om naar de verbruiksstap te gaan.

(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 aan uw oplossing toevoegt, wordt u gevraagd het project een naam te geven.

  1. Noem het consoleproject TaxiFare_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, moet er ongeveer uitzien als in het onderstaande fragment:

    Predicted Fare: 15.020833
    

Web-API

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

  1. Noem het web-API-project TaxiFare_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 = @{
        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. Als dit lukt, moet de uitvoer er ongeveer uitzien als de onderstaande tekst:

    score
    -----
    15.020833
    

Volgende stappen

In deze zelfstudie heeft u het volgende geleerd:

  • De gegevens voorbereiden en begrijpen
  • Een scenario kiezen
  • De gegevens laden
  • Het model trainen
  • Het model evalueren
  • Het model gebruiken voor voorspellingen

Aanvullende resources

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