예제 #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            double dou = 0;

            //listBox1.Items.Clear();
            for (double q = 0.0001; q < 0.1; q = q + 0.005)
            {
                n   = q;
                dou = 0;
                //Объем обучающей выборки
                countRow  = Convert.ToInt32(textBox_X.Text);
                numHidden = Convert.ToInt32(textBox_C.Text);
                countIter = Convert.ToInt32(textBox1.Text);
                // чтение входных данных
                x = ReaderWriter.ReadMatrix(filename, countRow, numInput);
                double[] d = ReaderWriter.ReadVector(filename, countRow, numInput);
                D = new double[countRow, numOutput];
                RecountD(d);
                for (int i = 0; i < 10; i++)
                {
                    //Коэффициент обучение сети
                    // n = Convert.ToDouble(textBox_n.Text);
                    countRow  = Convert.ToInt32(textBox_X.Text);
                    numHidden = Convert.ToInt32(textBox_C.Text);
                    countIter = Convert.ToInt32(textBox1.Text);
                    // чтение входных данных
                    x = ReaderWriter.ReadMatrix(filename, countRow, numInput);
                    d = ReaderWriter.ReadVector(filename, countRow, numInput);
                    D = new double[countRow, numOutput];
                    RecountD(d);

                    //Инициализация центроид
                    // centroids = ReaderWriter.ReadMatrixC(filename, countRow, numInput, numHidden, d);

                    rn           = new NeuralNetwork(countRow, numInput, numHidden, numOutput, x, centroids, n, temp, er);
                    rn.countIter = countIter;
                    //Инициализация весов
                    rn.SetWeight();

                    // Обучение сети
                    //     rn.TrainNetwork(x, centroids, countRow, numInput, numHidden, numOutput, D);

                    er = rn.errTrain;


                    countRow = 30;
                    // чтение входных данных
                    x = ReaderWriter.ReadMatrix("iris_test.txt", countRow, numInput);
                    d = ReaderWriter.ReadVector("iris_test.txt", countRow, numInput);
                    D = new double[countRow, numOutput];
                    RecountD(d);

                    // Тестирование сети
                    errTest = rn.TestNetwork(x, D, countRow, numInput, numOutput, numHidden);
                    dou    += errTest;
                    // listBox1.Items.Add(errTest);
                }

                Console.WriteLine("(" + q + ";" + dou / 10 + ")");
                //   Console.WriteLine("(" + q +";" + dou / 10 + ")");
                //listBox1.Items.Add("Итого: " + dou / 10);
            }

            for (double q = 0.1; q < 1; q = q + 0.02)
            {
                n   = q;
                dou = 0;
                //Объем обучающей выборки
                countRow  = Convert.ToInt32(textBox_X.Text);
                numHidden = Convert.ToInt32(textBox_C.Text);
                countIter = Convert.ToInt32(textBox1.Text);
                // чтение входных данных
                x = ReaderWriter.ReadMatrix(filename, countRow, numInput);
                double[] d = ReaderWriter.ReadVector(filename, countRow, numInput);
                D = new double[countRow, numOutput];
                RecountD(d);
                for (int i = 0; i < 10; i++)
                {
                    //Коэффициент обучение сети
                    // n = Convert.ToDouble(textBox_n.Text);
                    countRow  = Convert.ToInt32(textBox_X.Text);
                    numHidden = Convert.ToInt32(textBox_C.Text);
                    countIter = Convert.ToInt32(textBox1.Text);
                    // чтение входных данных
                    x = ReaderWriter.ReadMatrix(filename, countRow, numInput);
                    d = ReaderWriter.ReadVector(filename, countRow, numInput);
                    D = new double[countRow, numOutput];
                    RecountD(d);

                    //Инициализация центроид
                    //  centroids = ReaderWriter.ReadMatrixC(filename, countRow, numInput, numHidden, d);

                    rn           = new NeuralNetwork(countRow, numInput, numHidden, numOutput, x, centroids, n, temp, er);
                    rn.countIter = countIter;
                    //Инициализация весов
                    rn.SetWeight();

                    // Обучение сети
                    //   rn.TrainNetwork(x, centroids, countRow, numInput, numHidden, numOutput, D);

                    er = rn.errTrain;


                    countRow = 30;
                    // чтение входных данных
                    x = ReaderWriter.ReadMatrix("iris_test.txt", countRow, numInput);
                    d = ReaderWriter.ReadVector("iris_test.txt", countRow, numInput);
                    D = new double[countRow, numOutput];
                    RecountD(d);

                    // Тестирование сети
                    errTest = rn.TestNetwork(x, D, countRow, numInput, numOutput, numHidden);
                    dou    += errTest;
                    // listBox1.Items.Add(errTest);
                }

                Console.WriteLine("(" + q + ";" + dou / 10 + ")");
                //   Console.WriteLine("(" + q +";" + dou / 10 + ")");
                // listBox1.Items.Add("Итого: " + dou / 10);
            }
        }
예제 #2
0
        private void button_test_Click(object sender, EventArgs e)
        {
            countRow        = (int)(countRow * 1.05);
            label_Test.Text = "Testing error: ";

            if (checkBox1.Checked == true)
            {
                CreateValues("dollar.txt");
            }
            else
            {
                CreateValues();
            }
            double[] d = new double[D.GetLength(0)];
            for (int i = 0; i < d.Length; i++)
            {
                d[i] = D[i, 0];
            }

            // Тестирование сети
            errTest = rn.TestNetwork(x, D, countRow, numInput, numOutput, numHidden);

            Matrix result = rn.result;

            //listBox1.Items.Clear();

            if (chart1.Series.Count != 2)
            {
                chart1.Series.Add("");
            }

            chart1.Series[0].Points.Clear();
            chart1.Series[1].Points.Clear();

            if (checkBox1.Checked == true)
            {
                chart1.ChartAreas[0].AxisY.Minimum = 30;
                chart1.ChartAreas[0].AxisY.Maximum = 100;
            }
            else
            {
                chart1.ChartAreas[0].AxisY.Minimum = 0;
                chart1.ChartAreas[0].AxisY.Maximum = 1000;
            }

            chart1.Legends[0].Docking  = System.Windows.Forms.DataVisualization.Charting.Docking.Bottom;
            chart1.Series[0].Name      = "Received value";
            chart1.Series[1].Name      = "Original value";
            chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
            chart1.Series[1].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;

            for (int i = 1; i < countRow - 1; i++)
            {
                chart1.Series[0].Points.AddXY(i, result.Get(i + 1, 0));
                chart1.Series[1].Points.AddXY(i, d[i]);
            }

            //for (int i = 0; i < result.Row; i++)
            //{
            //    String resultD = "";
            //    String resultY = "";
            //    for (int j = 0; j < result.Column; j++)
            //    {
            //        resultY += result.Get(i, j).ToString() + " ";
            //        resultD += D[i, j].ToString() + " ";
            //    }
            ////    listBox1.Items.Add(resultD + " | " + resultY);
            //}
            label_Test.Text = "Testing error: " + errTest;
        }