# 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).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://delphai.gitbook.io/delphai/documentacao/images-and-media/regressao/knn.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
