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;
        }
Beispiel #3
0
        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;
        }
Beispiel #5
0
        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);
        }