Kurz: předpověď cen pomocí regrese pomocí Tvůrce modelůTutorial: Predict prices using regression with Model Builder

Naučte se používat Tvůrce modelů ML.NET k vytvoření regresního modelu pro předpověď cen.Learn how to use ML.NET Model Builder to build a regression model to predict prices. Aplikace konzoly .NET, kterou vyvíjíte v tomto kurzu, předpovídá taxislužby tarify na základě historických dat o taxislužby tarifech z historických Praha.The .NET console app that you develop in this tutorial predicts taxi fares based on historical New York taxi fare data.

Šablona předpovědi ceny tvůrce modelů se dá použít pro libovolný scénář, který vyžaduje hodnotu číselné předpovědi.The Model Builder price prediction template can be used for any scenario requiring a numerical prediction value. Mezi příklady scénářů patří: předpověď ceny na pracovišti, Předpověď poptávky a prognózování prodeje.Example scenarios include: house price prediction, demand prediction, and sales forecasting.

V tomto kurzu se naučíte:In this tutorial, you learn how to:

  • Příprava a pochopení datPrepare and understand the data
  • Zvolte scénářChoose a scenario
  • Načtení datLoad the data
  • Výuka modeluTrain the model
  • Vyhodnocení modeluEvaluate the model
  • Použití modelu pro předpovědiUse the model for predictions

Poznámka

Tvůrce modelů je aktuálně ve verzi Preview.Model Builder is currently in Preview.

PožadavkyPre-requisites

Seznam požadavků a pokyny k instalaci najdete v Průvodci instalací modelu modelů.For a list of pre-requisites and installation instructions, visit the Model Builder installation guide.

Vytvoření konzolové aplikaceCreate a console application

  1. Vytvořte C# konzolovou aplikaci .NET Core nazvanou "TaxiFarePrediction".Create a C# .NET Core Console Application called "TaxiFarePrediction". Ujistěte se, že umístění řešení a projekt ve stejném adresáři není zaškrtnuté (vs 2019), nebo je zaškrtnuté políčko vytvořit adresář pro řešení (vs 2017).Make sure Place solution and project in the same directory is unchecked (VS 2019), or Create directory for solution is checked (VS 2017).

Příprava a pochopení datPrepare and understand the data

  1. Vytvořte v projektu adresář s názvem data pro uložení souborů datové sady.Create a directory named Data in your project to store the data set files.

  2. Sada dat, která se používá ke studiu a vyhodnocení modelu Machine Learning, je původně ze sady dat NYC TLC taxislužby Trip.The data set used to train and evaluate the machine learning model is originally from the NYC TLC Taxi Trip data set.

    1. Datovou sadu stáhnete tak, že přejdete na odkaz ke stažení taxi-Fare-Train. csv.To download the data set, navigate to the taxi-fare-train.csv download link.

    2. Po načtení stránky klikněte pravým tlačítkem myši kamkoli na stránku a vyberte Uložit jako.When the page loads, right-click anywhere on the page and select Save as.

    3. Pomocí dialogového okna Uložit jako uložte soubor do složky data , kterou jste vytvořili v předchozím kroku.Use the Save As Dialog to save the file in the Data folder you created at the previous step.

  3. V Průzkumník řešeníklikněte pravým tlačítkem na soubor taxi-Fare-Train. csv a vyberte vlastnosti.In Solution Explorer, right-click the taxi-fare-train.csv file and select Properties. V části Upřesnitzměňte hodnotu Kopírovat do výstupního adresáře na Kopírovat, pokud je novější.Under Advanced, change the value of Copy to Output Directory to Copy if newer.

Každý řádek v sadě taxi-fare-train.csv dat obsahuje podrobnosti o cestách provedených taxislužby.Each row in the taxi-fare-train.csv data set contains details of trips made by a taxi.

  1. Otevřete sadu dat taxi-Fare-Train. csv.Open the taxi-fare-train.csv data set

    Poskytnutá datová sada obsahuje následující sloupce:The provided data set contains the following columns:

    • vendor_id: ID dodavatele taxislužby je funkce.vendor_id: The ID of the taxi vendor is a feature.
    • rate_code: Typ rychlosti taxislužby Trip je funkce.rate_code: The rate type of the taxi trip is a feature.
    • passenger_count: Počet cestujících na cestách je funkce.passenger_count: The number of passengers on the trip is a feature.
    • trip_time_in_secs: Doba, po kterou cesta trvala.trip_time_in_secs: The amount of time the trip took. Chcete předpovědět jízdné za cestu před dokončením cesty.You want to predict the fare of the trip before the trip is completed. V tuto chvíli nevíte, jak dlouho trvá služební cyklus.At that moment you don't know how long the trip would take. Doba odezvy tedy není funkcí a tento sloupec z modelu vyloučíte.Thus, the trip time is not a feature and you'll exclude this column from the model.
    • trip_distance: Vzdálenost na cestách je funkce.trip_distance: The distance of the trip is a feature.
    • payment_type: Způsob platby (hotovost nebo platební karta) je funkce.payment_type: The payment method (cash or credit card) is a feature.
    • fare_amount: Celková částka taxislužby jízdné je štítek.fare_amount: The total taxi fare paid is the label.

label je sloupec, který chcete předpovědět.The label is the column you want to predict. Při provádění regresní úlohy je cílem předpovědět číselnou hodnotu.When performing a regression task, the goal is to predict a numerical value. V tomto scénáři odhadu cen se předpokládá, že náklady na taxislužby jízdní část budou předpovězeny.In this price prediction scenario, the cost of a taxi ride is being predicted. Proto je fare_amount jmenovka.Therefore, the fare_amount is the label. Identifikované features jsou vstupy, které modelu udělíte pro předpověď label.The identified features are the inputs you give the model to predict the label. V tomto případě se zbývající sloupce s výjimkou trip_time_in_secs používají jako funkce nebo vstupy pro předpověď množství tarifů.In this case, the rest of the columns with the exception of trip_time_in_secs are used as features or inputs to predict the fare amount.

Zvolte scénářChoose a scenario

Abyste mohli model vyškolit, musíte si vybrat ze seznamu dostupných scénářů strojového učení, které poskytuje tvůrce modelů.To train your model, you need to select from the list of available machine learning scenarios provided by Model Builder. V tomto případě je scénář Price Prediction.In this case, the scenario is Price Prediction.

  1. V Průzkumník řešeníklikněte pravým tlačítkem myši na projekt TaxiFarePrediction a vyberte Přidat > Machine Learning.In Solution Explorer, right-click the TaxiFarePrediction project, and select Add > Machine Learning.
  2. V kroku scénář nástroje Tvůrce modelů vyberte možnost scénář předpovědi cen .In the scenario step of the Model Builder tool, select Price Prediction scenario.

Načtení datLoad the data

Tvůrce modelů přijímá data ze dvou zdrojů, SQL Server databáze nebo místního souboru ve formátu CSV nebo TSV.Model Builder accepts data from two sources, a SQL Server database or a local file in csv or tsv format.

  1. V kroku dat nástroje Tvůrce modelů vyberte v rozevíracím seznamu zdroj dat soubor .In the data step of the Model Builder tool, select File from the data source dropdown.
  2. Vyberte tlačítko vedle textového pole Vybrat soubor a pomocí Průzkumníka souborů Procházejte a vyberte soubor taxi-Fare-test. csv v datovém adresáři.Select the button next to the Select a file text box and use File Explorer to browse and select the taxi-fare-test.csv in the Data directory
  3. V rozevíracím seznamu sloupec pro předpověď (popisek) vyberte možnost fare_amount .Choose fare_amount in the Column to Predict (Label) dropdown.
  4. Rozbalte rozevírací seznam vstupní sloupce (funkce) a zrušte kontrolu trip_time_in_secs sloupce, aby se vyloučil jako funkce během školení.Expand the Input Columns (Features) dropdown and uncheck the trip_time_in_secs column to exclude it as a feature during training. Přejděte do kroku výuka nástroje Tvůrce modelů.Navigate to the train step of the Model Builder tool.

Výuka modeluTrain the model

Úkol strojového učení, který se používá k výuce modelu předpovědi cen v tomto kurzu, je regrese.The machine learning task used to train the price prediction model in this tutorial is regression. V průběhu procesu školení modelů vlacích sestaví model modelování samostatné modely pomocí různých regresních algoritmů a nastavení, které pro datovou sadu vyhledají nejlepší model provádění.During the model training process, Model Builder trains separate models using different regression algorithms and settings to find the best performing model for your dataset.

Čas potřebný ke školení modelu je úměrný množství dat.The time required for the model to train is proportionate to the amount of data. Tvůrce modelů automaticky vybere výchozí hodnotu pro čas do výuky (sekundy) na základě velikosti zdroje dat.Model Builder automatically selects a default value for Time to train (seconds) based on the size of your data source.

  1. Ponechte výchozí hodnotu tak, aby byla pro čas do výuky (sekundy) , pokud nechcete, aby se vlak vydával po delší dobu.Leave the default value as is for Time to train (seconds) unless you prefer to train for a longer time.
  2. Vyberte Spustit školení.Select Start Training.

V průběhu procesu školení se data o průběhu zobrazují v části Progress v kroku výuka.Throughout the training process, progress data is displayed in the Progress section of the train step.

  • Stav zobrazuje stav dokončení procesu školení.Status displays the completion status of the training process.
  • Nejlepší přesnost zobrazuje přesnost nejlepšího modelu, kterou najde tvůrce modelů, zatím.Best accuracy displays the accuracy of the best performing model found by Model Builder so far. Vyšší přesnost znamená, že model se v testovacích datech podrobnějším způsobem vypovídat.Higher accuracy means the model predicted more correctly on test data.
  • Nejlepší algoritmus zobrazuje název nejlepšího výkonu, který našel tvůrce modelů, zatím.Best algorithm displays the name of the best performing algorithm performed found by Model Builder so far.
  • Poslední algoritmus zobrazuje název algoritmu naposledy, který tvůrce modelů použil k vytvoření výukového modelu.Last algorithm displays the name of the algorithm most recently used by Model Builder to train the model.

Po dokončení školení přejděte k kroku vyhodnocení.Once training is complete, navigate to the evaluate step.

Vyhodnocení modeluEvaluate the model

Výsledkem kroku školení bude jeden model, který má nejlepší výkon.The result of the training step will be one model which had the best performance. V kroku vyhodnocení nástroje pro sestavování modelů bude v sekci výstup obsahovat algoritmus používaný modelem nejlepšího provádění v nejlepším záznamu modelu spolu se metrikami v nejlepší kvalitě modelu (RSquared) .In the evaluate step of the Model Builder tool, the output section, will contain the algorithm used by the best performing model in the Best Model entry along with metrics in Best Model Quality (RSquared). Navíc Souhrnná tabulka obsahující pět modelů a jejich metriky.Additionally, a summary table containing top five models and their metrics.

Pokud nejste spokojeni s metrikami přesnosti, můžou vám některé jednoduché způsoby, jak zkusit a zlepšit přesnost modelu, zvýšit množství času pro výuku modelu nebo použít víc dat.If you're not satisfied with your accuracy metrics, some easy ways to try and improve model accuracy are to increase the amount of time to train the model or use more data. V opačném případě přejděte do kroku Code (kód).Otherwise, navigate to the code step.

Přidejte kód, který provede předpovědiAdd the code to make predictions

V důsledku školicího procesu se vytvoří dva projekty.Two projects will be created as a result of the training process.

  • TaxiFarePredictionML. ConsoleApp: Konzolová aplikace .NET Core, která obsahuje kód pro školení modelů a ukázku kódu.TaxiFarePredictionML.ConsoleApp: A .NET Core Console application that contains the model training and sample consumption code.
  • TaxiFarePredictionML. model: .NET Standard knihovny tříd obsahující datové modely, které definují schéma vstupních a výstupních dat modelu, uloženou verzi modelu nejlepšího provádění během školení a pomocnou třídu nazvanou ConsumeModel k vytvoření předpovědi.TaxiFarePredictionML.Model: A .NET Standard class library containing the data models that define the schema of input and output model data, the saved version of the best performing model during training and a helper class called ConsumeModel to make predictions.
  1. V kroku kód nástroje Tvůrce modelů vyberte Přidat projekty a přidejte do řešení automaticky generované projekty.In the code step of the Model Builder tool, select Add Projects to add the auto-generated projects to the solution.

  2. Otevřete soubor program.cs v projektu TaxiFarePrediction .Open the Program.cs file in the TaxiFarePrediction project.

  3. Přidejte následující příkaz using pro odkaz na projekt TaxiFarePredictionML. model :Add the following using statement to reference the TaxiFarePredictionML.Model project:

    using System;
    using TaxiFarePredictionML.Model;
    
  4. Chcete-li vytvořit předpovědi pro nová data pomocí modelu, vytvořte novou instanci třídy ModelInput v rámci metody Main vaší aplikace.To make a prediction on new data using the model, create a new instance of the ModelInput class inside the Main method of your application. Všimněte si, že částka tarifů není součástí vstupu.Notice that the fare amount is not part of the input. Důvodem je to, že model vygeneruje předpověď pro něj.This is because the model will generate the prediction for it.

    // Create sample data
    ModelInput input = new ModelInput()
    {
        Vendor_id = "CMT",
        Rate_code = 1,
        Passenger_count = 1,
        Trip_distance = 3.8f,
        Payment_type = "CRD"
    };
    
  5. Použijte metodu Predict z ConsumeModel třídy.Use the Predict method from the ConsumeModel class. Metoda Predict načte trained model, vytvoří pro model PredictionEngine a použije ho k předpovědií nových dat.The Predict method loads the trained model, create a PredictionEngine for the model and uses it to make predictions on new data.

    // Make prediction
    ModelOutput prediction = ConsumeModel.Predict(input);
    
    // Print Prediction
    Console.WriteLine($"Predicted Fare: {prediction.Score}");
    Console.ReadKey();
    
  6. Spusťte aplikaci.Run the application.

    Výstup generovaný programem by měl vypadat podobně jako následující fragment kódu:The output generated by the program should look similar to the snippet below:

    Predicted Fare: 14.96086
    

Pokud potřebujete odkazovat na vygenerované projekty později v jiném řešení, můžete je najít v adresáři C:\Users\%USERNAME%\AppData\Local\Temp\MLVSTools.If you need to reference the generated projects at a later time inside of another solution, you can find them inside the C:\Users\%USERNAME%\AppData\Local\Temp\MLVSTools directory.

Další krokyNext Steps

V tomto kurzu jste zjistili, jak:In this tutorial, you learned how to:

  • Příprava a pochopení datPrepare and understand the data
  • Zvolte scénářChoose a scenario
  • Načtení datLoad the data
  • Výuka modeluTrain the model
  • Vyhodnocení modeluEvaluate the model
  • Použití modelu pro předpovědiUse the model for predictions

Další materiály a zdroje informacíAdditional Resources

Další informace o tématech uvedených v tomto kurzu najdete v následujících zdrojích informací:To learn more about topics mentioned in this tutorial, visit the following resources: