gpt4 book ai didi

c# - 如何使用回归任务预测 ML.NET 的多个标签?

转载 作者:行者123 更新时间:2023-11-30 22:56:05 24 4
gpt4 key购买 nike

我是机器学习的新手,我偶然发现了以下问题。考虑 an official NYC Taxi fare amount prediction tutorial ,假设我想预测另一个实际值,例如旅行时间。我修改了我的代码如下:

public class TripFarePrediction // this class is used to store prediction result
{
[ColumnName("Score")]
public float FareAmount { get; set; }

[ColumnName("Score2")]
public float TripTime { get; set; }
}


private static ITransformer Train(MLContext mlContext, string trainDataPath)
{
IDataView dataView = _textLoader.Read(trainDataPath);
var pipelineForTripTime = mlContext.Transforms.CopyColumns("Label", "TripTime")
.Append(mlContext.Transforms.Categorical.OneHotEncoding("VendorId"))
.Append(mlContext.Transforms.Categorical.OneHotEncoding("RateCode"))
.Append(mlContext.Transforms.Categorical.OneHotEncoding("PaymentType"))
.Append(mlContext.Transforms.Concatenate("Features", "VendorId", "RateCode", "PassengerCount", "TripDistance", "PaymentType"))
.Append(mlContext.Regression.Trainers.FastTree());

var pipelineForFareAmount = mlContext.Transforms.CopyColumns("Label", "FareAmount")
.Append(mlContext.Transforms.Categorical.OneHotEncoding("VendorId"))
.Append(mlContext.Transforms.Categorical.OneHotEncoding("RateCode"))
.Append(mlContext.Transforms.Categorical.OneHotEncoding("PaymentType"))
.Append(mlContext.Transforms.Concatenate("Features", "VendorId", "RateCode", "PassengerCount", "TripDistance", "PaymentType"))
.Append(mlContext.Regression.Trainers.FastTree());



var model = pipelineForTripTime.Append(pipelineForFareAmount).Fit(dataView);
SaveModelAsFile(mlContext, model);
return model;
}

第一个值 (FareAmount) 被“正确”预测(值不为零),但第二个值 (TripTime) 为零。我的问题是如何一次或至少使用相同的模型预测两个或多个标签?这可能吗?我正在使用 .NET Core 2.2 和 ML.NET 0.10.0 来完成这项任务。预先感谢您的任何帮助。

最佳答案

可能它不起作用,因为 Fit() 只返回“Label”和“Score”

看这里:here

您在“TripTime”中的分数被“FareAmount”覆盖。

我想,您必须构建两个模型。

编辑:你可以试试这个。将“分数”复制到正确的位置。

public class TripFarePrediction // this class is used to store prediction result
{
[ColumnName("fareAmount")]
public float FareAmount { get; set; }

[ColumnName("tripTime")]
public float TripTime { get; set; }
}


private static ITransformer Train(MLContext mlContext, string trainDataPath)
{
IDataView dataView = _textLoader.Read(trainDataPath);
var pipelineForTripTime = mlContext.Transforms.CopyColumns("Label", "TripTime")
.Append(mlContext.Transforms.Categorical.OneHotEncoding("VendorId"))
.Append(mlContext.Transforms.Categorical.OneHotEncoding("RateCode"))
.Append(mlContext.Transforms.Categorical.OneHotEncoding("PaymentType"))
.Append(mlContext.Transforms.Concatenate("Features", "VendorId", "RateCode", "PassengerCount", "TripDistance", "PaymentType"))
.Append(mlContext.Regression.Trainers.FastTree())
.Append(mlContext.Transforms.CopyColumns(outputcolumn: "tripTime", inputcolumn: "Score"));

var pipelineForFareAmount = mlContext.Transforms.CopyColumns("Label", "FareAmount")
.Append(mlContext.Transforms.Categorical.OneHotEncoding("VendorId"))
.Append(mlContext.Transforms.Categorical.OneHotEncoding("RateCode"))
.Append(mlContext.Transforms.Categorical.OneHotEncoding("PaymentType"))
.Append(mlContext.Transforms.Concatenate("Features", "VendorId", "RateCode", "PassengerCount", "TripDistance", "PaymentType"))
.Append(mlContext.Regression.Trainers.FastTree())
.Append(mlContext.Transforms.CopyColumns(outputcolumn: "fareAmount", inputcolumn: "Score"));



var model = pipelineForTripTime.Append(pipelineForFareAmount).Fit(dataView);
SaveModelAsFile(mlContext, model);
return model;
}

关于c# - 如何使用回归任务预测 ML.NET 的多个标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54691584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com