KNN

O K-Nearest Neighbors é um modelo de classificação que toma decisões com base na proximidade dos dados. Diferente de outros algoritmos, o KNN não realiza um processo de treinamento propriamente dito, em vez disso, ele utiliza todo o conjunto de dados original (base de dados) no momento da predição. Quando um novo dado precisa ser classificado, o modelo calcula a distância entre esse dado e todos os pontos da base, identificando os K vizinhos mais próximos. A classe mais comum entre esses vizinhos é então atribuída ao dado.

Por depender diretamente da base de dados durante a predição, o KNN pode consumir mais memória e se tornar mais lento à medida que o conjunto de dados cresce. Apesar disso, ele é uma escolha eficaz para problemas que envolvem conjuntos de dados pequenos ou médios, onde a simplicidade e a precisão local são desejáveis.

EXEMPLO DE USO

uses
  UKNN;
  
procedure KNNPredict;
var
  vKNN: TKNNClassification;
begin
  vKNN := TKNNClassification.Create('C:\Delphai\Delphai\Datasets\Iris.csv', 3, False);
  try
    ShowMessage(vKNN.Predict([6.3, 3.3, 4.7, 1.6]));
  finally
    vKNN.Free;
  end;
end;

GUIA DE CLASSES E MÉTODOS

TKNNClassification

  • FDataset : TAIDatasetClassification; : acessa a base de dados atual contido no modelo.

  • procedure ClearDataset; : limpa a base de dados.

  • constructor Create(aTrainingData : String; aK: Integer; aHasHeader : Boolean = True); ou

  • constructor Create(aTrainingData : TDataSet; aK: Integer); : cria o objeto com a base que será usada para treinamento.

    • aTrainingData : caminho do arquivo CSV ou objeto TDataSet que contém os dados que serão usados para treinamento.

    • K : número de vizinhos próximos que serão utilizados para considerar o resultado.

    • aHasHeader : indica se tem cabeçalho no arquivo.

  • function Predict(aSample : TArray<Double>; aInputNormalized : Boolean = False): string; : prevê a melhor categoria para a amostra.

    • aSample : amostra a ser analisada.

    • aInputNormalized : deve ser passado como true somente se os dados da entrada já foram normalizadas por fora do componente (o que deve ser feito utilizando o range salvo no objeto).

Last updated