Я использую ML.NET для прогнозирования серии значений с использованием регрессионной модели. Меня интересует только один прогнозируемый столбец (столбец оценки). Однако значения некоторых других столбцов недоступны для класса прогнозирования. Я не могу оставить их в 0, так как это нарушило бы прогноз, поэтому я предполагаю, что их также нужно будет прогнозировать.
Я видел похожий вопрос здесь о прогнозировании нескольких значений. Ответ предлагает создать две модели, но я вижу, что столбцы объектов, указанные в каждой модели, не включают столбец меток другой модели. Таким образом, это означает, что эти столбцы не будут использоваться при прогнозировании. Я не прав, или столбец меток каждой модели также должен быть включен в столбец функций другой модели?
Вот пример кода, который можно попытаться объяснить в коде:
public class FooInput
{
public float Feature1 { get; set; }
public float Feature2 { get; set; }
public float Bar {get; set; }
public float Baz {get; set; }
}
public class FooPrediction : FooInput
{
public float BarPrediction { get; set; }
public float BazPrediction { get; set; }
}
public ITransformer Train(IEnumerable<FooInput> data)
{
var mlContext = new MLContext(0);
var trainTestData = mlContext.Data.TrainTestSplit(mlContext.Data.LoadFromEnumerable(data));
var pipelineBar = mlContext.Transforms.CopyColumns("Label", "Bar")
.Append(mlContext.Transforms.CopyColumns("Score", "BarPrediction"))
.Append(mlContext.Transforms.Concatenate("Features", "Feature1", "Feature2", "Baz"))
.Append(mlContext.Regression.Trainers.FastTree());
var pipelineBaz = mlContext.Transforms.CopyColumns("Label", "Baz")
.Append(mlContext.Transforms.CopyColumns("Score", "BazPrediction"))
.Append(mlContext.Transforms.Concatenate("Features", "Feature1", "Feature2", "Bar"))
.Append(mlContext.Regression.Trainers.FastTree());
return pipelineBar.Append(pipelineBaz).Fit(trainTestData.TestSet);
}
По сути, это то же самое, что и вышеупомянутый ответ, но с добавлением Baz
в качестве признака для модели, где прогнозируется Bar
, и наоборот, с добавлением Bar
в качестве признака для модели, где Baz
должно быть предсказано.
Является ли это правильным подходом, или ответ на другой вопрос дает желаемый результат, заключающийся в том, что прогнозирование каждого столбца будет использовать значения другого прогнозируемого столбца из загруженногонабор данных?