示例#1
0
        private void button_Sample_Click(object sender, EventArgs e)
        {
            label_err.Text = "Learning error: ";

            label_Test.Text = "Testing error: ";

            //Коэффициент обучение сети
            n = Convert.ToDouble(textBox_n.Text);

            //Объем обучающей выборки
            countRow  = Convert.ToInt32(textBox_X.Text);
            numInput  = Convert.ToInt32(textBox2.Text);
            numHidden = Convert.ToInt32(textBox_C.Text);
            countIter = Convert.ToInt32(textBox1.Text);
            //чтение входных данных
            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];
            }

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

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

            double[] res = new double[countRow];
            // Обучение сети
            rn.TrainNetwork(x, centroids, countRow, numInput, numHidden, numOutput, D, out res);

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

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

            //    chart2.ChartAreas[0].AxisX.Minimum = 30;
            //    chart2.ChartAreas[0].AxisX.Maximum = 50;
            // chart2.ChartAreas[0].AxisX.Interval = 1;
            if (checkBox1.Checked == true)
            {
                chart2.ChartAreas[0].AxisY.Minimum = 30;
                chart2.ChartAreas[0].AxisY.Maximum = 100;
            }
            else
            {
                chart2.ChartAreas[0].AxisY.Minimum = -100;
                chart2.ChartAreas[0].AxisY.Maximum = 1000;
            }



            //  chart2.ChartAreas[0].AxisY.Interval = 10;
            chart2.Legends[0].Docking  = System.Windows.Forms.DataVisualization.Charting.Docking.Bottom;
            chart2.Series[0].Name      = "Received value";
            chart2.Series[1].Name      = "Original value";
            chart2.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
            chart2.Series[1].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;

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

            er             = rn.errTrain;
            label_err.Text = "Learning error: " + er;

            temp = rn.temp;


            //  button_Sample.Enabled = false;
            button_test.Enabled = true;
        }
示例#2
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);
            }
        }