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);
}
}
System information
.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;
}
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();
}