private void TestBtn_Copy_Click(object sender, RoutedEventArgs e) { if (this.network == null) { return; } var classesCount = 0; var attributesCount = 0; var csvData = this.GetSetFromFile(ref classesCount, ref attributesCount, true); if (csvData == null) { return; } var dataSet = csvData.NormalizedData; var resX = new List <double>(dataSet.Count); var resY = new List <double>(dataSet.Count); var lowX = dataSet.Min(x => x.Item1[0]); var highX = dataSet.Max(x => x.Item1[0]); var lowY = dataSet.Min(x => x.Item1[1]); var highY = dataSet.Max(x => x.Item1[1]); var data = dataSet.Select(x => new { x = x.Item1[0], y = x.Item1[1], resCls = NetworkBase.GetClass(this.network.Predict(x.Item1)) }); this.DrawChart( "Trained results", data.GroupBy(x => x.resCls) .Select(x => x.Select(y => new Tuple <double, double>(y.x, y.y))), lowX, highX, lowY, highY ); SaveFileDialog saveFileDlg = new SaveFileDialog(); saveFileDlg.Filter = "csv files (*.csv)|*.txt|All files (*.*)|*.*"; var c = new CultureInfo("en-US"); if (saveFileDlg.ShowDialog() == true) { File.WriteAllLines ( saveFileDlg.FileName, data.Zip(csvData.RawData, (f, s) => $"{s.Item1[0].ToString(c)},{s.Item1[1].ToString(c)},{f.resCls + 1}") ); } }
private void TestBtnClick(object sender, RoutedEventArgs e) { if (this.network == null) { return; } int classesCount = 0, attributesCount = 0; var testSet = this.GetSetFromFile(ref classesCount, ref attributesCount)?.NormalizedData; if (testSet is null) { return; } var resX = new List <double>(testSet.Count); var resY = new List <double>(testSet.Count); var lowX = testSet.Min(x => x.Item1[0]); var highX = testSet.Max(x => x.Item1[0]); var lowY = 0.0; var highY = 0.0; if (networkType is ClassificationNetwork) { lowY = testSet.Min(x => x.Item1[1]); highY = testSet.Max(x => x.Item1[1]); } else if (networkType is RegressionNetwork) { lowY = testSet.Min(x => x.Item2[0]); highY = testSet.Max(x => x.Item2[0]); } if (networkType is ClassificationNetwork) { this.DrawChart ( "Correct results", testSet.GroupBy(x => x.Item2.IndexOf(1.0)).Select(g => g.Select(x => new Tuple <double, double>(x.Item1[0], x.Item1[1]))), lowX, highX, lowY, highY ); } else { this.DrawChart ( "Correct results", testSet.GroupBy(x => x.Item2.IndexOf(1.0)).Select(g => g.Select(x => new Tuple <double, double>(x.Item1[0], x.Item2[0]))), lowX, highX, lowY, highY ); } var data = testSet.Select(x => new { x = x.Item1[0], y = x.Item1[1], cls = NetworkBase.GetClass(x.Item2), resCls = NetworkBase.GetClass(this.network.Predict(x.Item1)) }); if (networkType is RegressionNetwork) { data = testSet.Select(x => new { x = x.Item1[0], y = this.network.Predict(x.Item1).First(), cls = NetworkBase.GetClass(x.Item2), resCls = NetworkBase.GetClass(this.network.Predict(x.Item2)) }); } var acc = data.Count(x => x.cls == x.resCls) / (double)data.Count() * 100; this.DrawChart( "Trained results", data.GroupBy(x => x.resCls) .Select(x => x.Select(y => new Tuple <double, double>(y.x, y.y))), lowX, highX, lowY, highY ); this.AccLbl.Content = acc.ToString(); }