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(); }
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); }
/// <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]); } }