Skip to content

LearningPipeline.Execute must have a Data step as the last step #285

@Btjones711

Description

@Btjones711

System information

  • OS version/distro: windows 10
  • .NET Version (eg., dotnet --info):
    .Net 7.1

Issue

I am getting this error: LearningPipeline.Execute must have a Data step as the last step
When trying to create my pipeline following along the "Tutorial: Use ML.NET to predict New York Taxi Fares (Regression)" tutorial.

Source code / logs

Here is my class and main program code:

TermDate.cs
public class TerminationDate
{
[Column(ordinal: "0")]
public float age;
[Column(ordinal: "1")]
public float gender;
[Column(ordinal: "2")]
public float married;
[Column(ordinal: "3")]
public float salary;
[Column(ordinal: "4")]
public float TermYear;
}

public class TermDatePrediction
{
    [Column("Score")]
    public float TermYear;
}

part of Program.cs
class Program
{
const string _datapath = @"......\Data\Book1.csv";
const string _testdatapath = @"......\Data\Book2.csv";
const string _modelpath = @"......\Models\Model.zip";
static async Task Main(string[] args)
{
PredictionModel<TerminationDate, TermDatePrediction> modelTerm = await Train();
Evaluate(modelTerm);
var predictionTerm = modelTerm.Predict(TestTerminations.Term1);
Console.WriteLine("Predicted Year: {0}", predictionTerm.TermYear);
Console.ReadLine();
}

    public static async Task<PredictionModel<TerminationDate, TermDatePrediction>> Train()
    {
        var pipeline = new LearningPipeline
        {
            new TextLoader<TerminationDate>(_datapath, useHeader: true, separator: ","),
            new ColumnCopier(("TermYear","Label")),
            new ColumnConcatenator("Features", "age", "gender", "married", "salary"),
            new FastTreeRegressor()
        };
        PredictionModel<TerminationDate, TermDatePrediction> modelTerm = pipeline.Train<TerminationDate, TermDatePrediction>();
        await modelTerm.WriteAsync(_modelpath);
        return modelTerm;
    }

    private static void Evaluate(PredictionModel<TerminationDate, TermDatePrediction> model)
    {
        var testData = new TextLoader<TerminationDate>(_testdatapath, useHeader: true, separator: ",");
        var evaluator = new RegressionEvaluator();
        RegressionMetrics metrics = evaluator.Evaluate(model, testData);
        Console.WriteLine("RMS=" + metrics.Rms);
        Console.WriteLine("R^2=" + metrics.RSquared);
    }
}

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions