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(); }
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(); } }