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}"); } } }
public NeuralNetworkModel(Dataset dataset, Dataset testSet) { for (int i = 0; i < dataset.RowCount; i++) { trainDataset.Records.Add(dataset.Records[i]); } for (int i = 0; i < testSet.RowCount; i++) { testDataset.Records.Add(testSet.Records[i]); } // Топология var topology = new Topology(trainDataset.ClassesNames?.Count ?? 1, 0.01, trainDataset.ColumnCount); neuralNetwork = new RBFNeuralNetwork(topology); }