Ejemplo n.º 1
0
        private void button14_Click(object sender, EventArgs e)
        {
            InfaDlyaExperimentaCIzmenenPoroga infa = new InfaDlyaExperimentaCIzmenenPoroga();

            infa.min  = Convert.ToDouble(dataGridView9.Rows[0].Cells[1].Value);
            infa.max  = Convert.ToDouble(dataGridView9.Rows[1].Cells[1].Value);
            infa.shag = Convert.ToDouble(dataGridView9.Rows[2].Cells[1].Value);

            progressBar1.Value   = 0;
            progressBar1.Maximum = Convert.ToInt32((infa.max - infa.min) / infa.shag) + 2;

            Task.Factory.StartNew(() => { ExperimentCIzmenenPoroga(infa); }); //Создание и запуск нового потока
        }
Ejemplo n.º 2
0
        public void ExperimentCIzmenenPoroga(object a)
        {
            InfaDlyaExperimentaCIzmenenPoroga infa = (InfaDlyaExperimentaCIzmenenPoroga)a;
            int countRow = ocenkaAnomalii.Length;

            for (double i = infa.min; i < infa.max; i += infa.shag)
            {
                int TP = 0;
                int TN = 0;
                int FP = 0;
                int FN = 0;

                bool[] predictedClass = new bool[countRow];

                //Определение класса на основе порога
                for (int k = 0; k < countRow; k++)
                {
                    if (ocenkaAnomalii[k] > i)
                    {
                        predictedClass[k] = true;
                    }
                    else
                    {
                        predictedClass[k] = false;
                    }
                }

                for (int k = 0; k < countRow; k++)
                {
                    if ((trueClass[k] == true) && (trueClass[k] == predictedClass[k]))
                    {
                        TP++;
                    }

                    if ((trueClass[k] == false) && (trueClass[k] == predictedClass[k]))
                    {
                        TN++;
                    }

                    if ((trueClass[k] == true) && (trueClass[k] != predictedClass[k]))
                    {
                        FP++;
                    }

                    if ((trueClass[k] == false) && (trueClass[k] != predictedClass[k]))
                    {
                        FN++;
                    }
                }

                string[] row = calculatingMetriks(i, TP, TN, FP, FN);

                dataGridView10.Invoke((Action)(() =>
                {
                    dataGridView10.Rows.Add(row);
                }));

                int obmen = TP;
                TP = TN;
                TN = obmen;

                obmen = FP;
                FP    = FN;
                FN    = obmen;

                row = calculatingMetriks(i, TP, TN, FP, FN);

                dataGridView11.Invoke((Action)(() =>
                {
                    dataGridView11.Rows.Add(row);
                }));

                label1.Invoke((Action)(() => { label1.Text = "Порог:" + i + "/" + infa.max; }));
                progressBar1.Invoke((Action)(() => { progressBar1.Value++; }));
            }
        }