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); }