Example #1
0
        public void TestPredictionWindowSize()
        {
            using (StreamWriter sw = new StreamWriter(@"E:\repos\RBFNetwork\windowSize.txt"))
            {
                for (int i = 10; i <= 10; i++)
                {
                    var    data         = GetTemperatureDataAsync(95, i).Result;
                    int    accuracy     = 0;
                    var    topology     = new Topology(data.trainData.ClassesNames?.Count ?? 1, 0.01, data.trainData.ColumnCount);
                    var    network      = new RBFNeuralNetwork(topology);
                    double error        = network.Train(data.trainData, 100, false);
                    double predictError = 0;
                    foreach (Record record in data.testData.Records)
                    {
                        var expected = record.Expected[0];
                        var output   = network.Predict(record.InputData)[0];
                        var diff     = expected - output;
                        predictError += diff * diff;

                        if ((expected * data.inputsSum - output * data.inputsSum) <= 2)
                        {
                            accuracy++;
                        }
                    }
                    predictError = Math.Sqrt(predictError / (data.testData.RowCount - 1));
                    Trace.WriteLine($"Current accuracy: {accuracy} of {data.testData.Records.Count} = {accuracy * 100 / data.testData.Records.Count}%");
                    var predicted = accuracy * 100 / data.testData.RowCount;
                    sw.WriteLine($"{i}   {predictError}   {predicted}");
                }
            }
        }
Example #2
0
        public double Train()
        {
            // Нормализация данных для обучающей выборки
            trainDataset.Normalize();

            // Считаем ошибку кол-во эпох 30
            double error = neuralNetwork.Train(trainDataset, 30);

            return(error);
        }