Tutorial: Vorhersagen von Preisen per Regression mit dem Modell-GeneratorTutorial: Predict prices using regression with Model Builder

Hier erfahren Sie, wie Sie mit dem ML.NET-Modellgenerator ein Regressionsmodells für Preisvorhersagen erstellen.Learn how to use ML.NET Model Builder to build a regression model to predict prices. Die .NET Konsolenanwendung, die Sie in diesem Tutorial entwickeln, sagt Taxipreise basierend auf historischen Taxipreisdaten aus New York vorher.The .NET console app that you develop in this tutorial predicts taxi fares based on historical New York taxi fare data.

Die Preisvorhersagevorlage des Modell-Generators kann für jedes Szenario verwendet werden, das einen numerischen Vorhersagewert erfordert.The Model Builder price prediction template can be used for any scenario requiring a numerical prediction value. Beispielszenarien sind: Vorhersagen des Hauspreises oder der Nachfrage und Umsatzprognosen.Example scenarios include: house price prediction, demand prediction, and sales forecasting.

In diesem Tutorial lernen Sie, wie die folgenden Aufgaben ausgeführt werden:In this tutorial, you learn how to:

  • Vorbereiten und Verstehen der DatenPrepare and understand the data
  • Auswählen eines SzenariosChoose a scenario
  • Laden der DatenLoad the data
  • Trainieren des ModellsTrain the model
  • Evaluieren des ModellsEvaluate the model
  • Verwenden des Modells für VorhersagenUse the model for predictions

Hinweis

Der Modell-Generator befindet sich derzeit in der Vorschauphase.Model Builder is currently in Preview.

VoraussetzungenPre-requisites

Eine Liste der Voraussetzungen und Installationsanweisungen finden Sie in der Installationsanleitung für den Modell-Generator.For a list of pre-requisites and installation instructions, visit the Model Builder installation guide.

Erstellen einer KonsolenanwendungCreate a console application

  1. Erstellen Sie eine C# .NET Core-Konsolenanwendung mit dem Namen „TaxiFarePrediction“.Create a C# .NET Core Console Application called "TaxiFarePrediction". Stellen Sie sicher, dass die Option zum Platzieren von Projektmappe und Projekt im selben Verzeichnis deaktiviert (VS 2019) oder die Option Verzeichnis für Projektmappe erstellen aktiviert ist (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).

Vorbereiten und Verstehen der DatenPrepare and understand the data

  1. Erstellen Sie ein Verzeichnis mit dem Namen Daten in Ihrem Projekt, um die Datasetdateien zu speichern.Create a directory named Data in your project to store the data set files.

  2. Das Dataset zum Trainieren und Bewerten des Machine Learning-Modells stammt ursprünglich aus dem Dataset „NYC TLC Taxi Trip“.The data set used to train and evaluate the machine learning model is originally from the NYC TLC Taxi Trip data set.

    1. Navigieren Sie zum Herunterladen des Datasets zum Downloadlink für „taxi-fare-train.csv“.To download the data set, navigate to the taxi-fare-train.csv download link.

    2. Klicken Sie mit der rechten Maustaste auf die geladene Seite, und wählen Sie Speichern unter aus.When the page loads, right-click anywhere on the page and select Save as.

    3. Speichern Sie die Datei über das Dialogfeld Speichern unter im Ordner Daten, den Sie im vorherigen Schritt erstellt haben.Use the Save As Dialog to save the file in the Data folder you created at the previous step.

  3. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Datei taxi-fare-train.csv, und wählen Sie Eigenschaften aus.In Solution Explorer, right-click the taxi-fare-train.csv file and select Properties. Ändern Sie unter Erweitert den Wert von In Ausgabeverzeichnis kopieren in Kopieren, wenn neuer.Under Advanced, change the value of Copy to Output Directory to Copy if newer.

Jede Zeile im Dataset taxi-fare-train.csv enthält Details zu den Fahrten eines Taxis.Each row in the taxi-fare-train.csv data set contains details of trips made by a taxi.

  1. Öffnen Sie das Dataset taxi-fare-train.csv.Open the taxi-fare-train.csv data set

    Das angegebene Dataset enthält die folgenden Spalten:The provided data set contains the following columns:

    • vendor_id: Die ID des Taxiunternehmers ist ein Feature.vendor_id: The ID of the taxi vendor is a feature.
    • rate_code: Der Tariftyp der Taxifahrt ist ein Feature.rate_code: The rate type of the taxi trip is a feature.
    • passenger_count: Die Anzahl der Fahrgäste bei einer Fahrt ist ein Feature.passenger_count: The number of passengers on the trip is a feature.
    • trip_time_in_secs: Die Dauer der Fahrt.trip_time_in_secs: The amount of time the trip took. Der Fahrpreis soll vorhergesagt werden, bevor die Fahrt abgeschlossen ist.You want to predict the fare of the trip before the trip is completed. Zu diesem Zeitpunkt wissen Sie noch nicht, wie lange die Fahrt dauert.At that moment you don't know how long the trip would take. Deshalb ist die Fahrtzeit kein Feature, und Sie müssen diese Spalte aus dem Modell ausschließen.Thus, the trip time is not a feature and you'll exclude this column from the model.
    • trip_distance: Die Fahrtstrecke ist ein Feature.trip_distance: The distance of the trip is a feature.
    • payment_type: Die Zahlungsmethode (Bargeld oder Kreditkarte) ist ein Feature.payment_type: The payment method (cash or credit card) is a feature.
    • fare_amount: Der gesamte gezahlte Taxifahrtpreis ist die Bezeichnung.fare_amount: The total taxi fare paid is the label.

label ist die Spalte, die vorhergesagt werden soll.The label is the column you want to predict. Das Ziel bei der Durchführung einer Regressionsaufgabe ist die Vorhersage eines numerischen Werts.When performing a regression task, the goal is to predict a numerical value. In diesem Preisvorhersageszenario werden die Kosten für eine Taxifahrt vorhergesagt.In this price prediction scenario, the cost of a taxi ride is being predicted. Daher lautet die Bezeichnung fare_amount.Therefore, the fare_amount is the label. Die identifizierten features sind die Eingaben, die Sie für das Modell zum Vorhersagen von label bereitstellen.The identified features are the inputs you give the model to predict the label. In diesem Fall werden die restlichen Spalten mit Ausnahme von trip_time-in-secs als Features oder Eingaben verwendet, um den Fahrpreis vorherzusagen.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.

Auswählen eines SzenariosChoose a scenario

Um Ihr Modell zu trainieren, wählen Sie ein Szenario aus der Liste der vom Modell-Generator bereitgestellten verfügbaren Machine Learning-Szenarien aus.To train your model, you need to select from the list of available machine learning scenarios provided by Model Builder. In diesem Fall handelt es sich um das Szenario Price Prediction.In this case, the scenario is Price Prediction.

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt TaxiFarePrediction, und wählen Sie Hinzufügen > Machine Learning aus.In Solution Explorer, right-click the TaxiFarePrediction project, and select Add > Machine Learning.
  2. Wählen Sie im Schritt „Szenario“ des Modell-Generator-Tools das Szenario Price Prediction aus.In the scenario step of the Model Builder tool, select Price Prediction scenario.

Laden der DatenLoad the data

Der Modellgenerator akzeptiert Daten aus zwei Quellen: aus einer SQL Server-Datenbank oder aus einer lokalen Datei im CSV- oder TSV-Format.Model Builder accepts data from two sources, a SQL Server database or a local file in csv or tsv format.

  1. Wählen Sie im Schritt „Daten“ des Modell-Generator-Tools die Option Datei aus der Dropdownliste „Datenquelle“ aus.In the data step of the Model Builder tool, select File from the data source dropdown.
  2. Wählen Sie die Schaltfläche neben dem Textfeld Datei auswählen, und verwenden Sie den Datei-Explorer, um die Datei taxi-fare-test.csv im Verzeichnis Daten zu suchen und auszuwählen.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. Wählen Sie in der Dropdownliste Column to Predict (Label) (Vorherzusagende Spalte (Bezeichnung)) die Option fare_amount aus.Choose fare_amount in the Column to Predict (Label) dropdown.
  4. Erweitern Sie die Dropdownliste Eingabespalten (Features) , und deaktivieren Sie die Spalte trip_time_in_secs, um Sie während des Trainings als Feature auszuschließen.Expand the Input Columns (Features) dropdown and uncheck the trip_time_in_secs column to exclude it as a feature during training. Navigieren Sie zum Schritt „Trainieren“ des Modell-Generator-Tools.Navigate to the train step of the Model Builder tool.

Trainieren des ModellsTrain the model

Die in diesem Tutorial zum Trainieren des Preisvorhersagemodells verwendete Machine Learning-Aufgabe ist die Regression.The machine learning task used to train the price prediction model in this tutorial is regression. Während des Modelltrainings trainiert der Modell-Generator einzelne Modelle mit verschiedenen Regressionsalgorithmen und Einstellungen, um das leistungsfähigste Modell für Ihr Dataset zu finden.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.

Die Zeit, die für das Trainieren des Modells benötigt wird, ist proportional zur Datenmenge.The time required for the model to train is proportionate to the amount of data. Der Modell-Generator legt automatisch einen Standardwert für Time to train (seconds) (Trainingszeit (Sekunden)) basierend auf der Größe der Datenquelle fest.Model Builder automatically selects a default value for Time to train (seconds) based on the size of your data source.

  1. Ändern Sie den Standardwert für Time to train (seconds) (Trainingszeit (Sekunden)) nur, wenn Sie eine längere Trainingszeit angeben möchten.Leave the default value as is for Time to train (seconds) unless you prefer to train for a longer time.
  2. Wählen Sie Training starten aus.Select Start Training.

Während des gesamten Trainingsprozesses werden die Fortschrittsdaten im Abschnitt Progress des Schritts „Trainieren“ angezeigt.Throughout the training process, progress data is displayed in the Progress section of the train step.

  • „Status“ zeigt den Abschlussstatus des Trainingsprozesses an.Status displays the completion status of the training process.
  • „Beste Genauigkeit“ zeigt die Genauigkeit des leistungsfähigsten Modells, das bisher vom Modell-Generator gefunden wurde.Best accuracy displays the accuracy of the best performing model found by Model Builder so far. Eine höhere Genauigkeit bedeutet, dass die Vorhersage des Modells anhand der Testdaten präziser ist.Higher accuracy means the model predicted more correctly on test data.
  • „Bester Algorithmus“ zeigt den Namen des leistungsfähigsten Algorithmus an, der bisher vom Modell-Generator gefunden wurde.Best algorithm displays the name of the best performing algorithm performed found by Model Builder so far.
  • „Letzter Algorithmus“ zeigt den Namen des Algorithmus an, der zuletzt vom Modell-Generator zum Trainieren des Modells verwendet wurde.Last algorithm displays the name of the algorithm most recently used by Model Builder to train the model.

Navigieren Sie nach Abschluss des Trainings zum Schritt „Evaluieren“.Once training is complete, navigate to the evaluate step.

Evaluieren des ModellsEvaluate the model

Das Ergebnis des Schritts „Trainieren“ ist ein Modell mit der besten Leistung.The result of the training step will be one model which had the best performance. Der Schritt „Evaluieren“ des Modell-Generator-Tools, der Ausgabebereich, enthält den Algorithmus, der vom leistungsfähigsten Modell im Eintrag Bestes Modell verwendet wird, sowie Metriken in Beste Modellqualität (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). Außerdem finden Sie hier eine Übersichtstabelle mit den fünf besten Modellen und deren Metriken.Additionally, a summary table containing top five models and their metrics.

Wenn Sie mit Ihren Genauigkeitsmetriken nicht zufrieden sind, gibt es einige einfache Möglichkeiten, die Modellgenauigkeit zu verbessern. Dazu müssen Sie die Zeit für das Training des Modells erhöhen oder mehr Daten verwenden.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. Navigieren Sie andernfalls zum Codeschritt.Otherwise, navigate to the code step.

Hinzufügen des Codes für VorhersagenAdd the code to make predictions

Das Ergebnis des Trainings sind zwei Projekte.Two projects will be created as a result of the training process.

  • TaxiFarePredictionML.ConsoleApp: Eine .NET Core-Konsolenanwendung, die den Modelltrainings- und Beispielverbrauchscode enthält.TaxiFarePredictionML.ConsoleApp: A .NET Core Console application that contains the model training and sample consumption code.
  • TaxiFarePredictionML.Model: Eine .NET-Standardklassenbibliothek, die die Datenmodelle enthält, die das Schema der Eingabe- und Ausgabemodelldaten, die gespeicherte Version des leistungsfähigsten Modells während des Trainings sowie eine Hilfsklasse namens ConsumeModel definieren, um Vorhersagen zu treffen.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. Wählen Sie im Codeschritt des Modellgenerators die Option Projekte hinzufügen aus, um der Projektmappe die automatisch generierten Projekte hinzuzufügen.In the code step of the Model Builder tool, select Add Projects to add the auto-generated projects to the solution.

  2. Öffnen Sie die Datei Program.cs im Projekt TaxiFarePrediction.Open the Program.cs file in the TaxiFarePrediction project.

  3. Fügen Sie die folgenden using-Anweisungen hinzu, um auf das Projekt TaxiFarePredictionML.Model zu verweisen:Add the following using statement to reference the TaxiFarePredictionML.Model project:

    using System;
    using TaxiFarePredictionML.Model;
    
  4. Um eine Vorhersage für neue Daten mithilfe des Modells zu erstellen, erstellen Sie eine neue Instanz der Klasse ModelInput innerhalb der Main-Methode Ihrer Anwendung.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. Beachten Sie, dass der Fahrpreis nicht Teil der Eingabe ist.Notice that the fare amount is not part of the input. Das liegt daran, dass das Modell die Vorhersage dafür generiert.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. Verwenden Sie die Predict-Methode aus der ConsumeModel-Klasse.Use the Predict method from the ConsumeModel class. Die Predict-Methode lädt das trainierte Modell, erstellt eine Vorhersageengine (PredictionEngine) für das Modell und verwendet sie, um Vorhersagen für neue Daten zu generieren.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. Führen Sie die Anwendung aus.Run the application.

    Die vom Programm generierte Ausgabe sollte wie der folgende Ausschnitt aussehen:The output generated by the program should look similar to the snippet below:

    Predicted Fare: 14.96086
    

Wenn Sie zu einem späteren Zeitpunkt innerhalb einer anderen Projektmappe auf die generierten Projekte verweisen müssen, finden Sie diese im Verzeichnis 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.

Nächste SchritteNext Steps

In diesem Tutorial haben Sie gelernt, wie die folgenden Aufgaben ausgeführt werden:In this tutorial, you learned how to:

  • Vorbereiten und Verstehen der DatenPrepare and understand the data
  • Auswählen eines SzenariosChoose a scenario
  • Laden der DatenLoad the data
  • Trainieren des ModellsTrain the model
  • Evaluieren des ModellsEvaluate the model
  • Verwenden des Modells für VorhersagenUse the model for predictions

Zusätzliche RessourcenAdditional Resources

Weitere Informationen zu den in diesem Tutorial erwähnten Themen finden Sie in den folgenden Ressourcen:To learn more about topics mentioned in this tutorial, visit the following resources: