Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá FÓRUM, boa noite.
Estou tentando desenvolver um pequeno código de KNN, para minha aula de IA, mas estou com um pequeno problema na hora de exibir o sexo da pessoa.
No comando IF, ele não reconhece o valor do 2° item dentro do código.
if(valores[ i ] < **valores[ j ]**)
o vetor com o i, ele consegue trazer os dados corretos, mas o com j, ele não traz o valor correto, traz o valor de 0.
Mas, quando o i, dando um incremento, passando a assumir o valor de j da rodada passada, aí ele consegue trazer o valor que está naquela casa correto. E o j continua trazendo valor 0.
Já tentei também com i+1 lá dentro e não resolve.
O que estaria acontecendo ?
Segue abaixo o meu código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace bispoKNN
{
class Program
{
static void Main(string[] args)
{
List<Pessoa> pessoas = new List<Pessoa>();
pessoas.Add(new Pessoa("Mulher", 1.56, 48, 20));
pessoas.Add(new Pessoa("Mulher", 1.50, 45, 22));
pessoas.Add(new Pessoa("Mulher", 1.65, 55, 16));
pessoas.Add(new Pessoa("Homem", 1.75, 65, 7));
pessoas.Add(new Pessoa("Homem", 1.80, 75, 8));
pessoas.Add(new Pessoa("Homem", 1.90, 80, 5));
double[] desconhecido = {1.60, 60, 13};
Classifier(pessoas, desconhecido);
Console.ReadKey();
}
private static void Classifier(List<Pessoa> pessoas, double[] features)
{
int i = 0;
int j = i+1;
double[] valores = new double[10];
string genero = pessoas*.Nome;
*
*
**
while (i < pessoas.Count)*
*
{*
*
valores = Distance(pessoas.Features, features);*
*
Console.WriteLine("Distância {0} do Gênero {1}", valores, pessoas.Nome);*
*
if (i < (pessoas.Count - 1))*
*
{*
*
if (valores** < valores[j])*
*
{*
*
genero = pessoas**.Nome;*
*
}*
*
else*
*
{*
*
genero = pessoas[j].Nome;*
*
}*
*
}*
*
else*
*
{*
*
j = i - 1;*
*
if (valores** < valores[j])*
*
{*
*
genero = pessoas**.Nome;*
*
}*
*
else*
*
{*
*
genero = pessoas[j].Nome;*
*
}*
*
}*
*
*
*
i++;*
*
}*
*
Console.WriteLine("");*
*
Console.WriteLine("É do Sexo "+ genero +".");*
*
}
*
*
**
private static double Distance(double[] a, double[]b)*
*
{*
*
double sum = 0.0;
*
*
**
int i = 0;
*
*
**
while (i < a.Length)*
*
{*
*
sum += Math.Pow(a - b, 2);*
*
i++;*
*
}
*
*
**
return Math.Sqrt(sum);*
*
}*
*
}
*
*
**
public class Pessoa*
*
{*
*
public double[] Features;*
*
public string Nome;*
*
public Pessoa(string nome, double altura, double peso, double tamcabelo)*
*
{*
*
Features = new double[3];*
*
this.Nome = nome;*
*
Features[0] = altura;*
*
Features[1] = peso;*
*
Features[2] = tamcabelo;*
*
}*
*
}*
*
}
*
Carregando comentários...