Exemple #1
0
 /// <summary>
 /// Calcula o centróide geral do seus dados pegando a medias de todos os campos
 /// </summary>
 public void CalculaCentroideGeral()
 {
     for (int i = 0; i <= numeroDeAtributos - 1; i++)
     {
         CentroideGeral.Add(
             Dados.AsEnumerable().Average(x => Convert.ToDouble(x[i]))
             );
     }
     Tela.Escrever("Centróide Geral : ");
     Tela.Escrever(CentroideGeral);
 }
Exemple #2
0
        /// <summary>
        /// Calculo da separação - n * d(Ck,C)
        /// n = numero de registros do grupo
        /// d = calculo distancia
        /// Ck = centroide do grupo
        /// C = centroide geral
        /// </summary>
        public void CalculoSeparacao()
        {
            Separacoes.Clear();
            for (int i = 0; i <= Centroides.Count - 1; i++)
            {
                //Pega o total de registro que tem de determinado grupo
                var reg = Dados.AsEnumerable().Where(x => x.Field <int>("Grupo") == i).Count();


                Separacoes.Add(reg * Formulas.Distancia(Centroides[i], CentroideGeral));
            }
        }
Exemple #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]);
            }
        }
Exemple #4
0
 /// <summary>
 /// Calculo da Coesao
 /// soma da distancia de todos os itens do grupo para seu centroide
 /// </summary>
 public void CalculoCoesao()
 {
     Coesoes.Clear();
     for (int i = 0; i <= Centroides.Count - 1; i++)
     {
         Coesoes.Add(
             Dados.AsEnumerable()
             .Where(x => x.Field <int>("Grupo") == i)
             .Sum(x => x.Field <double>("DistanciaMin"))
             );
     }
 }
Exemple #5
0
        /// <summary>
        /// recalcula o centroide
        /// com base na medias dos registros do seu grupo
        /// </summary>
        public void RecalculaCentroides()
        {
            Centroides.Clear();
            var centroide = new List <double>();

            for (int i = 0; i <= NumeroGrupos - 1; i++)
            {
                centroide.Clear();
                for (int j = 0; j <= numeroDeAtributos - 1; j++)
                {
                    var total = Dados.AsEnumerable()
                                .Where(x => x.Field <int>("Grupo") == i)
                                .Average(x => Convert.ToDouble(x[j]));

                    centroide.Add(total);
                }

                Centroides.Add(centroide.ToList());
            }
        }