# KNN

O K-Nearest Neighbors (KN&#x4E;**)** é um modelo de regressã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 (banco de dados) no momento da predição. Quando um novo dado precisa ser previsto, o modelo calcula a distância entre esse dado e todos os pontos do banco, identificando os K vizinhos mais próximos. O valor final da predição é a média (ou outra agregação, como a mediana) dos valores associados a esses vizinhos.

Por depender diretamente do banco 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: TKNNRegression;
begin
  vKNN := TKNNRegression.Create('C:\Delphai\Delphai\Datasets\Housing Price.csv', 3);
  try
    ShowMessage('House price: ' + FormatCurr('##0.00', vKNN.Predict([2459, 1, 1, 1964, 3.1047807561601664, 0, 4])));
  finally
    vKNN.Free;
  end;
end;
```



#### GUIA DE CLASSES E MÉTODOS

TKNNRegression

* _FDataset : TAIDatasetClassification;_ : acessa o banco de dados atual contido no modelo.
* _procedure ClearDataset;_ : limpa o banco 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 : TAISampleAtr; aInputNormalized : Boolean = False): string;_ : prevê o valor da 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).

