private object BuildSummaryAndChart(Product product) => ProductWithData .Create(product) .Map(GetEstimate) .Match( estimate => PopulateDtoWithEstimate(product, estimate), error => PopulateDtoWithoutEstimate(product, error.ToString()) );
public static float GetEstimate(ProductWithData product) { MLContext mlContext = new MLContext(); IDataView dataView = mlContext.Data.LoadFromEnumerable(product.SalesData); var estimate = mlContext.Forecasting.ForecastBySsa( outputColumnName: nameof(SalesEstimate.ForecastAmount), inputColumnName: nameof(SalesDatum.Amount), windowSize: 3, seriesLength: 24, trainSize: 24, horizon: 1) .Fit(dataView) .CreateTimeSeriesEngine <SalesDatum, SalesEstimate>(mlContext) .Predict(); return(estimate.ForecastAmount.First()); }
private static Option <ProductWithData> Convert(this Product product) => ProductWithData.Create(product);
private static float GetEstimate(this ProductWithData product) => SsaEstimator.GetEstimate(product);
private static Either <Error, ProductWithData> ValidProduct(this Product product) => ProductWithData.Create(product);