Я довольно новичок в ML.NET. Прямо сейчас я просто копирую и вставляю код отсюда ML.NET Tutorial Taxi Fare . Но вместо использования указанных CSV-файлов я использую исторические цены акций BMW.DE с 1996 года по настоящее время. Я получил это отсюда Финансы Yahoo .
Моя цель - предсказать значение "Open" на следующий день.
Пример данных в моем файле BWM.DE.csv:
Date,Open
12/19/1996,20.0
12/20/1996,20.3
12/23/1996,20.6
12/27/1996,20.8
12/30/1996,20.9
1/2/1997,20.7
1/3/1997,20.8
1/6/1997,20.9
1/7/1997,20.6
Мой BMW Class
public class BmwOpenClass
{
[LoadColumn(0)]
public string Date;
[LoadColumn(1)]
public float Open;
}
public class PredictedOpen
{
[ColumnName("Score")]
public float Open;
}
А вот как я это натренировал
public static ITransformer Train(MLContext mlContext, string dataPath)
{
IDataView dataView = mlContext.Data.LoadFromTextFile<BmwOpenClass>(dataPath, hasHeader: true, separatorChar: ',');
var pipeline = mlContext.Transforms.CopyColumns(outputColumnName: "Label", inputColumnName: "Open")
.Append(mlContext.Transforms.Categorical.OneHotEncoding(outputColumnName: "DateEncoded", inputColumnName: "Date"))
.Append(mlContext.Transforms.Concatenate("Features", "DateEncoded"))
.Append(mlContext.Regression.Trainers.FastTree());
var model = pipeline.Fit(dataView);
SaveModelAsFile(mlContext, model);
return model;
}
Теперь, когда я попытался оценить модель (у меня есть отдельный файл CSV для целей оценки), я получаю качество модели:
R2 Оценка: -2,57
Среднеквадратичная потеря: 59,94
Я почти уверен, что -2.57 - это не нормально, потому что согласно документации R2 должен быть ближе к 1, чтобы сказать, что модель в порядке.