コード例 #1
0
        private void btnClassify_Click(object sender, EventArgs e)
        {
            /*
             *          o K é a quantidade de vizinhos que serão
             *          levados em conta para classificação de um
             *          novo dado, é recomendável que seja ímpar
             *          para que não possa haver empate
             */
            int K = Int32.Parse(txtNumber.Text);

            // tamanho do conjunto de dados de treinamento
            int tam_treinamento = Int32.Parse(txtQtdItens.Text); //Total 150 usar no maximo uns 70% para obter um melhor resultado.

            int acertos    = 0;
            int tam_testes = 150 - tam_treinamento;

            // processo de classificação
            for (int i = 0; i < tam_testes; i++)
            {
                string classe        = individuos[i].classe;
                string classe_obtida = Processamento.classificarAmostra(individuos, individuos[i], K);

                if (classe == classe_obtida)
                {
                    acertos++;
                }
            }

            label3.Text = "Número de acertos: " + acertos;
        }
コード例 #2
0
        private void button1_Click(object sender, EventArgs e)
        {
            dataGrid.Rows.Clear();

            Individuo ind = new Individuo(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, "");

            insertRow(ind);

            int K = Int32.Parse(txtNumber.Text);

            label10.Text = Processamento.classificarAmostra(individuos, ind, K);
        }
コード例 #3
0
        private void insertRow(Individuo ind)
        {
            double[]    distanciaAntiga = new double[] { 100, 100, 100 };
            Individuo[] proximos        = new Individuo[3];

            int index = 0;

            for (int i = 0; i < individuos.Count; i++)
            {
                double distanciaAtual = Processamento.obterDistEuclidiana(individuos[i], ind);

                if (distanciaAtual < distanciaAntiga[0])
                {
                    proximos[0]        = individuos[i];
                    distanciaAntiga[0] = distanciaAtual;
                }

                if (distanciaAtual < distanciaAntiga[1] && distanciaAtual > distanciaAntiga[0])
                {
                    proximos[1]        = individuos[i];
                    distanciaAntiga[1] = distanciaAtual;
                }

                if (distanciaAtual < distanciaAntiga[2] && distanciaAtual > distanciaAntiga[1] && distanciaAtual > distanciaAntiga[0])
                {
                    proximos[2]        = individuos[i];
                    distanciaAntiga[2] = distanciaAtual;
                }
            }

            for (int cont = 0; cont < proximos.Count(); cont++)
            {
                index = index + 1;

                string[] row = new string[6];
                row[0] = index + "";
                row[1] = proximos[cont].a.ToString();
                row[2] = proximos[cont].b.ToString();
                row[3] = proximos[cont].c.ToString();
                row[4] = proximos[cont].d.ToString();
                row[5] = proximos[cont].classe;

                dataGrid.Rows.Add(row);
            }
        }