Exemple #1
0
        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}")
                );
            }
        }
Exemple #2
0
        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();
        }