Esempio n. 1
0
        public static BasicNetwork loadNetwork(byte[] networkBytes)
        {
            FilePersistence location = new FilePersistence();

            location.AddStreamData(networkBytes);
            EncogPersistedCollection collection    = new EncogPersistedCollection(location, FileMode.Open);
            BasicNetwork             returnNetwork = (BasicNetwork)collection.Find("neuralNet");

            //Make sure we have the flattended network cached.
            returnNetwork.Structure.FinalizeStructure();

            return(returnNetwork);
        }
Esempio n. 2
0
        public static void saveNetwork(BasicNetwork network, string filename, string filePath)
        {
            if (filename.Substring(filename.Length - 4, 4) != ".eNN")
            {
                throw new Exception("Incorrect extension in filename");
            }

            EncogPersistedCollection collection = new EncogPersistedCollection(Path.Combine(filePath, filename), FileMode.Create);

            if (filename.Contains("\\"))
            {
                int indexOfSlash = filename.IndexOf('\\');
                collection.Add("neuralNet", network);
            }
            else
            {
                collection.Add("neuralNet", network);
            }
        }
Esempio n. 3
0
        public static void Go()
        {
            var encog = new EncogPersistedCollection("market-network.dat", FileMode.Open);

            Console.WriteLine(@"Loading network");
            var network = (BasicNetwork)encog.Find("market-network");

            Console.WriteLine(@"Reading current data from db");
            var market = new StockMarket();

            market.Init(false);
            var data = market.GetCurrentData();

            Console.WriteLine(@"Running network on data");

            var madness = new ModelMadness();

            foreach (StockMarket.WorkableStockInfo info in data)
            {
                var input       = InputOutputMadness.CreateInputs(info);
                var neuralInput = new BasicMLData(input);
                var output      = network.Compute(neuralInput);

                Console.WriteLine(@"Stock " + info.ViewToday.stock + @" will change " + output[0] + @"% in the next 20 trading days");

                var future = new prediction
                {
                    day            = DateTime.Now.Date,
                    C20_Days_Close = 100 * (decimal)output[0],
                    stock          = info.ViewToday.stock
                };

                madness.AddTopredictions(future);
            }

            madness.SaveChanges();

            Console.WriteLine(@"Done - begin making $millions");
        }
Esempio n. 4
0
        public static BasicNetwork loadNetwork(string filename, string filePath)
        {
            if (filename.Substring(filename.Length - 4, 4) != ".eNN")
            {
                throw new Exception("Unexpected network extension in filename");
            }

            string fullPath = Path.Combine(filePath, filename);

            if (!File.Exists(fullPath))
            {
                throw new ArgumentException("Requested file does not exist - " + fullPath);
            }

            EncogPersistedCollection collection    = new EncogPersistedCollection(fullPath, FileMode.Open);
            BasicNetwork             returnNetwork = (BasicNetwork)collection.Find("neuralNet");

            //Make sure we have the flattended network cached.
            returnNetwork.Structure.FinalizeStructure();

            return(returnNetwork);
        }
Esempio n. 5
0
        public static void Create()
        {
            var market = new StockMarket();

            market.Init(true);

            Console.WriteLine(@"Fetching training data from db");

            var trainingData = market.GetTrainingData();

            Console.WriteLine(@"Creating training set");

            var inputs  = new ArrayList();
            var outputs = new ArrayList();
            var cur     = 1;

            foreach (var info in trainingData)
            {
                Console.WriteLine(@"Adding record " + (cur++) + @" of " + trainingData.Count);

                var input  = InputOutputMadness.CreateInputs(info);
                var output = new[] { InputOutputMadness.CreateOutput(info) };

                inputs.Add(input);
                outputs.Add(output);
            }

            Console.WriteLine(@"Created training set - saving");

            var trainingSet = new BasicMLDataSet((double[][])inputs.ToArray(typeof(double[])), (double[][])outputs.ToArray(typeof(double[])));
            var encog       = new EncogPersistedCollection("market-training.dat", FileMode.Create);

            encog.Add("market-training", trainingSet);

            Console.WriteLine(@"saved");
        }
Esempio n. 6
0
        public static void Run(bool useBPN, double?learnRate, double?momentum)
        {
            Log("Using " +
                (useBPN ? "Back-Propagation training with learnRate = " + learnRate + ", momentum = " + momentum
                                                : "Resilient training"));

            Log("Loading training data");

            var          encog       = new EncogPersistedCollection("market-training.dat", FileMode.Open);
            var          trainingSet = (BasicMLDataSet)encog.Find("market-training");
            BasicNetwork network;

            if (File.Exists("market-network.dat"))
            {
                Log("Loading network");
                encog   = new EncogPersistedCollection("market-network.dat", FileMode.Open);
                network = (BasicNetwork)encog.Find("market-network");
            }
            else
            {
                Log("Creating new network");

                network = new BasicNetwork();

                // input & hiddens
                foreach (var num in InputOutputMadness.InputAndHiddenLayerInfo)
                {
                    network.AddLayer(new BasicLayer(num));
                }

                // output
                network.AddLayer(new BasicLayer(1));

                network.Structure.FinalizeStructure();
                network.Reset();
            }

            BasicTraining train;

            if (useBPN)
            {
                train = new Backpropagation(network, trainingSet, (double)learnRate, (double)momentum);
            }
            else
            {
                train = new ResilientPropagation(network, trainingSet);
            }

            //train = new NeuralGeneticAlgorithm(network, new FanInRandomizer(), new TrainingSetScore(trainingSet), 500, 0.1, 0.25);

            Log("Beginning Training");

            int epoch = 1;

            do
            {
                train.Iteration();
                Log("Epoch #" + epoch + " Error:" + train.Error);
                epoch++;

                if (epoch % 100 == 0)
                {
                    Log("Saving current data");

                    encog = new EncogPersistedCollection("market-network.dat", FileMode.Create);
                    encog.Create();
                    encog.Add("market-network", network);
                }
            }while (true);
        }