Beispiel #1
0
        private MatrizDeConfusao ClassificaBaseDeDados(Base treinamento, Base testes, Distancia metodoDeDistancia, Desempate metodoDeDesempate, int k)
        {
            var matriz = new MatrizDeConfusao(treinamento.Classes);

            foreach (var entrada in testes.Dados)
            {
                var classePrevista = PreveClasse(entrada, metodoDeDistancia, metodoDeDesempate, k);

                if (AcertouPrevisao(classePrevista, entrada.Classe))
                {
                    matriz.AcertouPrevisao(classePrevista);
                }
                else
                {
                    matriz.ErrouPrevisao(classePrevista, entrada.Classe);
                }
            }

            return(matriz);
        }
Beispiel #2
0
        public void Treina(Base treinamento, Base testes, Distancia metodoDeDistancia, Desempate metodoDeDesempate)
        {
            var kMaximo = Math.Log(10, 2);
            var melhorK = 0;

            BaseDeDados = treinamento.Zip(testes);

            for (var k = 3; k <= kMaximo; k++)
            {
                var tempo = new Stopwatch();
                tempo.Start();

                var matriz = ClassificaBaseDeDados(treinamento, testes, metodoDeDistancia, metodoDeDesempate, k);

                tempo.Stop();

                if (MatrizDeConfusao == null || matriz.Acuracia() > MatrizDeConfusao.Acuracia())
                {
                    MelhorK          = k;
                    MatrizDeConfusao = matriz;
                    TempoDeExecucao  = tempo.Elapsed;
                }
            }
        }