示例#1
0
        public Hopkins(BancoDados dados, TextBlock Saida)
        {
            Tela  = new Impressao(Saida, dados.CasasDecimais);
            Dados = dados.GetBancoCalculo();

            //cria dos bancos que vão armazenas amostra de dados para calculo do hopkins
            RegAmostraBanco = Dados.Clone();
            RegAleatorios   = Dados.Clone();

            /*"indexOriginal" é o index do registro na base de dados
             * original*/
            RegAmostraBanco.Columns.Add("indexOriginal", typeof(Double));
            RegAmostraBanco.Columns.Add("DistanciaMin", typeof(Double));
            RegAmostraBanco.Columns["DistanciaMin"].DefaultValue = 0;

            RegAleatorios.Columns.Add("DistanciaMin", typeof(Double));
            RegAleatorios.Columns["DistanciaMin"].DefaultValue = 0;

            Tela.Escrever("Pegando amostra do banco.");
            PreencherAmostraBanco();

            Tela.Escrever("Gerando registros aleatorios");
            PreencherAleatorios();

            Tela.Escrever("Calculando distancias minimas");
            CalculoMin(RegAmostraBanco);
            CalculoMin(RegAleatorios);

            Tela.Escrever("Finalizando!");
            Result = CalculoFinal();
        }
示例#2
0
        public Kmedias(BancoDados dados, TextBlock saida, int numeroGrupos)
        {
            //Cria a classe de Saida de dados
            Tela              = new Impressao(saida, dados.CasasDecimais);
            Dados             = dados.GetBancoCalculo();
            numeroDeAtributos = dados.GetBancoCalculo().Columns.Count;
            Dados.Columns.Add("Grupo", typeof(int));
            Dados.Columns.Add("DistanciaMin", typeof(double));

            /*se não for especificado o numero de grupos
             * o numero de grupos é definido por Sqrt(n/2) onde n
             *  é o numero de registros da minha base de dados*/
            NumeroGrupos = numeroGrupos == 0 ? Convert.ToInt32(Math.Sqrt((Dados.Rows.Count / 2.0))) : numeroGrupos;

            Tela.Escrever("Número de Grupos : " + NumeroGrupos);
        }
示例#3
0
        /// <summary>
        /// Responsavel por iniciar o processo de agrupamento
        /// </summary>
        public void Processamento()
        {
            Agrupa(Centroides);

            //imprime os grupos e a quantidade de registro que tem em cada um deles
            Tela.Escrever("\n Grupo : Itens : Coesão : Separação");
            for (int i = 0; i <= NumeroGrupos - 1; i++)
            {
                Tela.Escrever("Grupo " + i + " : " + Dados.AsEnumerable().Where(x => x.Field <int>("Grupo") == i).Count() +
                              " : " + Coesoes[i] + " : " + Separacoes[i]);
            }
        }