Example #1
0
        static void Main()
        {
            // Load data from CSV.
            List <StockDataPoint> dataPoints = StockDataUtility.ReadStockFile(@"msft.us.csv");

            // Create a normalized training set of all of the CSV data.
            StockDataSet trainingSet = new StockDataSet(dataPoints, true);

            // Remove a percentage of data points from training set to create a testing set.
            int testingSize = (int)(trainingSet.getSize() * 0.20f);
            List <StockDataPoint> testingPoints = new List <StockDataPoint>();

            for (int i = 0; i < testingSize; i++)
            {
                testingPoints.Add(trainingSet.RandomRemoveFromSet());
            }
            StockDataSet testingSet = new StockDataSet(testingPoints, false); // No need to normalize the data since it has already been normalized.

            // Create the neural network.
            var sizes = new List <int> {
                5, 30, 30, 1
            };
            var net = new Network(sizes, Activation.Sigmoid);

            // Driver code here.
            //net.LoadNetwork(@"network.dat");
            net.SGD(ref trainingSet, ref testingSet, 50, 10, 0.01f, true);
            //net.StockTest(ref testingSet);
            net.SaveNetwork(@"network.dat");
            Console.ReadKey();
        }
Example #2
0
        private void Normalize()
        {
            float lowOpen    = float.MaxValue;
            float highOpen   = float.MinValue;
            float lowHigh    = float.MaxValue;
            float highHigh   = float.MinValue;
            float lowLow     = float.MaxValue;
            float highLow    = float.MinValue;
            float lowClose   = float.MaxValue;
            float highClose  = float.MinValue;
            float lowVolume  = float.MaxValue;
            float highVolume = float.MinValue;

            foreach (StockDataPoint p in dataSet)
            {
                if (p.Open < lowOpen)
                {
                    lowOpen = p.Open;
                }
                if (p.Open > highOpen)
                {
                    highOpen = p.Open;
                }
                if (p.High < lowHigh)
                {
                    lowHigh = p.High;
                }
                if (p.High > highHigh)
                {
                    highHigh = p.High;
                }
                if (p.Low < lowLow)
                {
                    lowLow = p.Low;
                }
                if (p.Low > highLow)
                {
                    highLow = p.Low;
                }
                if (p.Close < lowClose)
                {
                    lowClose = p.Close;
                }
                if (p.Close > highClose)
                {
                    highClose = p.Close;
                }
                if (p.Volume < lowVolume)
                {
                    lowVolume = p.Volume;
                }
                if (p.Volume > highVolume)
                {
                    highVolume = p.Volume;
                }
            }

            foreach (StockDataPoint p in dataSet)
            {
                p.Open   = StockDataUtility.NormalizeValue(lowOpen, highOpen, p.Open);
                p.High   = StockDataUtility.NormalizeValue(lowHigh, highHigh, p.High);
                p.Low    = StockDataUtility.NormalizeValue(lowLow, highLow, p.Low);
                p.Close  = StockDataUtility.NormalizeValue(lowClose, highClose, p.Close);
                p.Volume = StockDataUtility.NormalizeValue(lowVolume, highVolume, p.Volume);
            }
        }