public AnalysisDem() { InitializeComponent(); Constants.RawData Data = Constants.Item.GetRawData(); int n = Constants.Item.GetCount(); var PredictedBP = new List <double>(); var ResidSup = new List <double>(); double ResidBP = 0; double[,] Regressors = FittingFunctions.FitLin(Data, n); for (var i = 0; i < n; i++) { var Qs = Data.SellQuantity.ElementAt(i); double BP = (Qs - Regressors[1, 1]) / Regressors[0, 1]; ResidBP = Qs - BP; PredictedBP.Add(BP); ResidSup.Add(ResidBP); } var StrdResid = DataPreparer.ListStrd(ResidSup); //create observable points for graphing AnalysisDis = Visualiser.SeriesBuilder(PredictedBP); DataContext = this; }
/// <summary> /// scatter plots of EWMA vs. raw /// </summary> public ScatterPlots() { InitializeComponent(); Constants.RawData data = Constants.Item.GetRawData(); int n = Constants.Item.GetCount(); var Ewma = DataPreparer.Weighter(data, 0.5); //LINQ, $ formatting PriceFormatter = value => value.ToString("C"); List <double> BuyQ = data.BuyQuantity.Select <int, double>(i => i).ToList(); List <double> BuyP = data.BuyPrice.Select <int, double>(i => i).ToList(); List <double> SellQ = data.SellQuantity.Select <int, double>(i => i).ToList(); List <double> SellP = data.SellPrice.Select <int, double>(i => i).ToList(); //~3500 data points possible with current config = 7000 total Object[] ScatterPoints = Visualiser.ScatterListBuilder(BuyQ, BuyP, SellQ, SellP, n); Object[] WScatterPoints = Visualiser.ScatterListBuilder(Ewma._strdBuyQuant, Ewma._strdBuyPrice, Ewma._strdSellQuant, Ewma._strdSellPrice, n); //note explicit conversion of types Supply = (ChartValues <ObservablePoint>)ScatterPoints[0]; Demand = (ChartValues <ObservablePoint>)ScatterPoints[1]; EwmaSupply = (ChartValues <ObservablePoint>)WScatterPoints[0]; EwmaDemand = (ChartValues <ObservablePoint>)WScatterPoints[1]; DataContext = this; }
static void Main(string[] args) { var dataSource = Config.GetDataSource(); var dataset = new DataPreparer(dataSource).GetCustomerAndVehicleData(); Solution solution = new Solution(); switch (Config.GetSolverType()) { case "GurobiSolver": solution = new GSolver(dataset).Run(); break; case "BendersSolver": solution = new BSolver(dataset).Run(); break; case "IterativeLocalSearch": solution = new IterativeLocalSearch(dataset).Run(); break; case "TabuSearch": solution = new TabuSearch(dataset).Run(); break; } var outputPathString = Config.GetFileOperation().OutputPath + Config.GetFileOperation().OutputName; using StreamWriter file = File.CreateText(outputPathString); JsonSerializer serializer = new JsonSerializer(); serializer.Serialize(file, solution); }
public TestContext() { DataClient = new MockRedisClientWrapper (); Settings = new DataManagerSettings (); Settings.IsVerbose = true; Keys = new DataKeys (Settings); IdManager = new DataIdManager (Keys, DataClient); TypeManager = new DataTypeManager (Keys, DataClient); EntityLinker = new EntityLinker (); var preparer = new DataPreparer (DataClient); Preparer = preparer; var reader = new DataReader (TypeManager, IdManager, Keys, DataClient); Reader = reader; var checker = new DataChecker (reader, Settings); Checker = checker; var saver = new DataSaver (Settings, TypeManager, IdManager, Keys, preparer, null, checker, DataClient); // The linker argument is null because it needs to be set after it's created below Saver = saver; var updater = new DataUpdater (Settings, Keys, null, preparer, checker, DataClient); // The linker argument is null because it needs to be set after it's created below Updater = updater; var linker = new DataLinker (Settings, reader, saver, updater, checker, EntityLinker); Linker = linker; // TODO: Is there a way to avoid this messy hack? // Make sure the linker is set to the saver and updater saver.Linker = linker; updater.Linker = linker; }
static void Main(string[] args) { BCCConsole.Write(BCCConsoleColor.DarkBlue, false, "Restaurant Recommender Is Started . . ."); MLContext mlContext = new MLContext(0); var trainingDataFile = Environment.CurrentDirectory + @"\Data\TrainingFile.tsv"; DataPreparer.PreprocessData(trainingDataFile); IDataView trainingDataView = mlContext.Data .LoadFromTextFile <ModelInput>(trainingDataFile, hasHeader: true); var dataPreProcessingPipeLine = mlContext.Transforms.Conversion .MapValueToKey("UserIdEncoded", nameof(ModelInput.UserId)) .Append(mlContext.Transforms.Conversion .MapValueToKey("RestaurantNameEncoded", nameof(ModelInput.RestaurantName))); var options = new MatrixFactorizationTrainer.Options { MatrixColumnIndexColumnName = "UserIdEncoded", MatrixRowIndexColumnName = "RestaurantNameEncoded", LabelColumnName = "TotalRating", NumberOfIterations = 10, ApproximationRank = 200, Quiet = true }; var trainer = mlContext.Recommendation().Trainers.MatrixFactorization(options); var trainerPipeLine = dataPreProcessingPipeLine.Append(trainer); #region Not Using CV BCCConsole.Write(BCCConsoleColor.DarkBlue, false, "\n", "Training Model"); var model = trainerPipeLine.Fit(trainingDataView); ////Test //var testUserId = "U1134"; var predictionEngine = mlContext.Model .CreatePredictionEngine <ModelInput, ModelOutput>(model); //var alreadyRatedRestaurant = mlContext.Data // .CreateEnumerable<ModelInput>(trainingDataView, false) // .Where(r => r.UserId == testUserId) // .Select(r => r.RestaurantName) // .Distinct(); //var allRestaurantNames = trainingDataView // .GetColumn<string>("RestaurantName") // .Distinct().Where(r => !alreadyRatedRestaurant.Contains(r)); //var scoredRestaurant = allRestaurantNames // .Select(rn => // { // var prediction = predictionEngine.Predict( // new ModelInput() // { // UserId = testUserId, // RestaurantName = rn // }); // return (RestaurantName: rn, PredictedScore: prediction.Score); // }); //var top10Restaurant = scoredRestaurant // .OrderByDescending(r => r.PredictedScore) // .Take(10); //BCCConsole.Write(BCCConsoleColor.DarkGreen,false, // "\n", // $"Top 10 Restaurant Name & Rate For User {testUserId}", // "----------------------------------------------------"); //foreach (var top in top10Restaurant) //{ // BCCConsole.Write(BCCConsoleColor.DarkGreen,false,$"Prediction Score [{top.PredictedScore:#.0}] | Restaurant Name [{top.RestaurantName}] "); //} //BCCConsole.Write(BCCConsoleColor.DarkGreen,false, "----------------------------------------------------"); #endregion #region Using CV //var cvMetrics = mlContext.Recommendation() // .CrossValidate(trainingDataView, trainerPipeLine, labelColumnName: "TotalRating"); //var averageRMSE = cvMetrics.Average(cv => cv.Metrics.RootMeanSquaredError); //var averageRSquared = cvMetrics.Average(cv => cv.Metrics.RSquared); //BCCConsole.Write(BCCConsoleColor.DarkGreen, false, // "\n", // "Training Result Before Cross Validation (Metrics) ", // "--------------------------------------------------", // $"RMSE => Root Error : {averageRMSE:#.000}", // $"RSQ => RSquared : {averageRSquared:#.000}", // "--------------------------------------------------"); #endregion Console.WriteLine("Enter Restaurant Name"); string rn = Console.ReadLine(); if (string.IsNullOrEmpty(rn)) { "Error".Red(); Environment.Exit(-1); } var prediction = predictionEngine.Predict(new ModelInput() { UserId = "CLONED", RestaurantName = rn }); BCCConsole.Write(BCCConsoleColor.Green, false, "\n", $"Prediction Result Score : {prediction.Score:#.0} For Rincon Huasteco"); //HyperParameterExploration(mlContext, dataPreProcessingPipeLine, trainingDataView); }