Iam trying to forecast sales data , here below my code
class Program
{
static void Main(string[] args)
{
var connectionString = "connectionstring";
var query = "SELECT StoreID,ItemID,SalesDate,cast(A.SalesQty as real) AS SaleQty FROM SaleTable";
var mlContext = new MLContext();
var databaseLoader = mlContext.Data.CreateDatabaseLoader<SalesData>();
var dataView = databaseLoader.Load(new DatabaseSource(SqlClientFactory.Instance, connectionString, query));
var pipeline = mlContext.Forecasting.ForecastBySsa(
outputColumnName: "ForecastQty",
inputColumnName: "SaleQty",
windowSize: 90,
seriesLength: 365,
trainSize: 365,
horizon: 30,
confidenceLevel:0.95F
);
var model = pipeline.Fit(dataView);
var engine = model.CreateTimeSeriesEngine<SalesData, SalesPrediction>(mlContext);
var startDate = new DateTime(2023, 1, 1);
var endDate = new DateTime(2023, 12, 31);
var dateCursor = startDate;
while (dateCursor <= endDate)
{
var salesData = new SalesData { SaleDate = dateCursor };
var forecast = engine.Predict(salesData);
Console.WriteLine($"StoreID: {salesData.StoreID}, ItemID: {salesData.ItemID}, SaleDate: {salesData.SaleDate.ToString("yyyy-MM-dd")}, ForecastQty: {forecast.Forecast}");
dateCursor = dateCursor.AddMonths(1);
}
Console.ReadLine();
}
}
public class SalesData
{
public string StoreID { get; set; }
public string ItemID { get; set; }
public DateTime SaleDate { get; set; }
public float SaleQty { get; set; }
}
public class SalesPrediction
{
[ColumnName("ForecastQty")]
//[VectorType()]
public float Forecast { get; set; }
}
i got error
Can't bind the IDataView column 'ForecastQty' of type 'Vector<Single, 30>' to field or property 'Forecast' of type 'System.Single
however if i added Vector attribute i got the below error
Member Forecast marked with VectorTypeAttribute, but does not appear to be a vector type
i tried to search for solution but still not solved
public class SalesPrediction {
} this modification solved the problem