Esempio n. 1
0
        private static void CreateEvaluationSet(string @fileName)
        {
            List <double>     Opens          = SuperUtils.QuickParseCSV(fileName, "Open", 1200, 1200);
            List <double>     High           = NetworkUtility.QuickParseCSV(fileName, "High", 1200, 1200);
            List <double>     Low            = NetworkUtility.QuickParseCSV(fileName, "Low", 1200, 1200);
            List <double>     Close          = NetworkUtility.QuickParseCSV(fileName, "Close", 1200, 1200);
            List <double>     Volume         = NetworkUtility.QuickParseCSV(fileName, 5, 1200, 1200);
            TemporalMLDataSet superTemportal = new TemporalMLDataSet(100, 1);

            double[] Ranges = NetworkUtility.CalculateRanges(Opens.ToArray(), Close.ToArray());

            superTemportal = NetworkUtility.GenerateTrainingWithPercentChangeOnSerie(100, 1, Opens.ToArray(),
                                                                                     Close.ToArray(), High.ToArray(), Low.ToArray(), Volume.ToArray());

            IMLDataPair        aPairInput  = SuperUtils.ProcessPair(NetworkUtility.CalculatePercents(Opens.ToArray()), NetworkUtility.CalculatePercents(Opens.ToArray()), 100, 1);
            IMLDataPair        aPairInput3 = SuperUtils.ProcessPair(NetworkUtility.CalculatePercents(Close.ToArray()), NetworkUtility.CalculatePercents(Close.ToArray()), 100, 1);
            IMLDataPair        aPairInput2 = SuperUtils.ProcessPair(NetworkUtility.CalculatePercents(High.ToArray()), NetworkUtility.CalculatePercents(High.ToArray()), 100, 1);
            IMLDataPair        aPairInput4 = SuperUtils.ProcessPair(NetworkUtility.CalculatePercents(Volume.ToArray()), NetworkUtility.CalculatePercents(Volume.ToArray()), 100, 1);
            IMLDataPair        aPairInput5 = SuperUtils.ProcessPair(NetworkUtility.CalculatePercents(Ranges.ToArray()), NetworkUtility.CalculatePercents(Ranges.ToArray()), 100, 1);
            List <IMLDataPair> listData    = new List <IMLDataPair>();

            listData.Add(aPairInput);
            listData.Add(aPairInput2);
            listData.Add(aPairInput3);
            listData.Add(aPairInput4);
            listData.Add((aPairInput5));


            var minitrainning = new BasicMLDataSet(listData);

            var    network           = (BasicNetwork)CreateElmanNetwork(100, 1);
            double normalCorrectRate = EvaluateNetworks(network, minitrainning);

            double temporalErrorRate = EvaluateNetworks(network, superTemportal);

            Console.WriteLine("Percent Correct with normal Data Set:" + normalCorrectRate + " Percent Correct with temporal Dataset:" +
                              temporalErrorRate);



            Console.WriteLine("Paused , Press a key to continue to evaluation");
            Console.ReadKey();
        }
Esempio n. 2
0
        public static BasicMLDataSet CreateEvaluationSetAndLoad(string @fileName, int startLine, int HowMany, int WindowSize, int outputsize)
        {
            List <double> Opens  = NetworkUtility.QuickParseCSV(fileName, "Open", startLine, HowMany);
            List <double> High   = NetworkUtility.QuickParseCSV(fileName, "High", startLine, HowMany);
            List <double> Low    = NetworkUtility.QuickParseCSV(fileName, "Low", startLine, HowMany);
            List <double> Close  = NetworkUtility.QuickParseCSV(fileName, "Close", startLine, HowMany);
            List <double> Volume = NetworkUtility.QuickParseCSV(fileName, 5, startLine, HowMany);


            TemporalMLDataSet superTemportal = new TemporalMLDataSet(WindowSize, outputsize);

            double[] Ranges = NetworkUtility.CalculateRanges(Opens.ToArray(), Close.ToArray());



            superTemportal = NetworkUtility.GenerateTrainingWithPercentChangeOnSerie(100, 1, Opens.ToArray(),
                                                                                     Close.ToArray(), High.ToArray(), Low.ToArray(), Volume.ToArray());

            IMLDataPair        aPairInput  = SuperUtils.ProcessPair(NetworkUtility.CalculatePercents(Opens.ToArray()), NetworkUtility.CalculatePercents(Opens.ToArray()), WindowSize, outputsize);
            IMLDataPair        aPairInput3 = SuperUtils.ProcessPair(NetworkUtility.CalculatePercents(Close.ToArray()), NetworkUtility.CalculatePercents(Close.ToArray()), WindowSize, outputsize);
            IMLDataPair        aPairInput2 = SuperUtils.ProcessPair(NetworkUtility.CalculatePercents(High.ToArray()), NetworkUtility.CalculatePercents(High.ToArray()), WindowSize, outputsize);
            IMLDataPair        aPairInput4 = SuperUtils.ProcessPair(NetworkUtility.CalculatePercents(Volume.ToArray()), NetworkUtility.CalculatePercents(Volume.ToArray()), WindowSize, outputsize);
            IMLDataPair        aPairInput5 = SuperUtils.ProcessPair(NetworkUtility.CalculatePercents(Ranges.ToArray()), NetworkUtility.CalculatePercents(Ranges.ToArray()), WindowSize, outputsize);
            List <IMLDataPair> listData    = new List <IMLDataPair>();

            listData.Add(aPairInput);
            listData.Add(aPairInput2);
            listData.Add(aPairInput3);
            listData.Add(aPairInput4);
            listData.Add((aPairInput5));


            var minitrainning = new BasicMLDataSet(listData);

            return(minitrainning);
        }
        public void Execute(IExampleInterface app)
        {
            this.app = app;
            FileInfo dataDir = new FileInfo(Environment.CurrentDirectory);

            if (String.Compare(app.Args[0], "randomtrainer", true) == 0)
            {
                if (app.Args.Length > 1)
                {
                    Encog.Examples.RangeandMarket.RandomTrainer.RandomTrainerMethod(Convert.ToInt16(app.Args[1]), Convert.ToInt16(app.Args[2]));
                }
                else
                {
                    Console.WriteLine(@"You didn't input enough args in your request, will default to 3000 inputs , and 50 prediction size");
                    Encog.Examples.RangeandMarket.RandomTrainer.RandomTrainerMethod(3000, 50);
                    MakeAPause();
                }
            }


            if (String.Compare(app.Args[0], "eval", true) == 0)
            {
                if (app.Args.Length > 0)
                {
                    //We have enough arguments, lets test them.
                    if (File.Exists(app.Args[1]))
                    {
                        BasicMLDataSet set = CreateEval.CreateEvaluationSetAndLoad(app.Args[1], CONFIG.EvalHowMany, CONFIG.EvalStartFrom, CONFIG.Inputs,
                                                                                   CONFIG.Outputs);

                        //create our network.
                        BasicNetwork network =
                            (BasicNetwork)SuperUtils.LoadNetwork(CONFIG.DIRECTORY, CONFIG.NetWorkFile);
                        CreateEval.EvaluateNetworks(network, set);
                        MakeAPause();
                        app.Exit();
                    }
                }
            }



            if (String.Compare(app.Args[0], "prune", true) == 0)
            {
                //Start pruning.
                Console.WriteLine("Starting the pruning process....");

                Prunes.Incremental(new FileInfo(CONFIG.DIRECTORY), CONFIG.NetWorkFile,
                                   CONFIG.TrainingFile);

                MakeAPause();
                app.Exit();
            }
            if (String.Compare(app.Args[0], "train", true) == 0)
            {
                if (app.Args.Length > 0)
                {
                    //We have enough arguments, lets test them.
                    if (File.Exists(app.Args[1]))
                    {
                        //the file exits lets build the training.

                        //create our basic ml dataset.
                        BasicMLDataSet set = CreateEval.CreateEvaluationSetAndLoad(app.Args[1], CONFIG.HowMany, CONFIG.StartFrom, CONFIG.Inputs,
                                                                                   CONFIG.Outputs);

                        //create our network.
                        BasicNetwork network = (BasicNetwork)CreateEval.CreateElmanNetwork(CONFIG.Inputs, CONFIG.Outputs);

                        //Train it..

                        double LastError = CreateEval.TrainNetworks(network, set);

                        Console.WriteLine("NetWork Trained to :" + LastError);
                        SuperUtils.SaveTraining(CONFIG.DIRECTORY, CONFIG.TrainingFile, set);
                        SuperUtils.SaveNetwork(CONFIG.DIRECTORY, CONFIG.NetWorkFile, network);
                        Console.WriteLine("Network Saved to :" + CONFIG.DIRECTORY + " File Named :" +
                                          CONFIG.NetWorkFile);

                        Console.WriteLine("Training Saved to :" + CONFIG.DIRECTORY + " File Named :" +
                                          CONFIG.TrainingFile);
                        MakeAPause();
                    }
                    else
                    {
                        Console.WriteLine("Couldnt find the file :" + app.Args[2].ToString());
                        Console.WriteLine("Exiting");
                        MakeAPause();
                        app.Exit();
                    }
                }
            }
            else
            {
                Console.WriteLine("Couldnt understand your command..");
                Console.WriteLine(
                    "Valid commands are : RandomTrainer or Randomtrainer [inputs] [output] , or Train [File]");
                Console.WriteLine(
                    "Valid commands are : Range Prune, to prune your network.");
                Console.WriteLine(
                    "Valid commands are : Range eval , to evaluate your network.");
                MakeAPause();
                app.Exit();
            }
        }