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

1

There are 1 best solutions below

0
S.M.Oth On

public class SalesPrediction {

 [ColumnName("ForecastQty")]
 [VectorType(1)] 
 public float[] Forecast { get; set; }

} this modification solved the problem