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