

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# K-Nearest Algoritmo de vizinhos (k-NN)
<a name="k-nearest-neighbors"></a>

O algoritmo de k-Nearest Neighbors (k-NN) da Amazon SageMaker AI é um algoritmo baseado em índices. Ele usa um método não paramétrico para classificação ou regressão. Para problemas de classificação, o algoritmo consulta os *k* pontos que estão mais próximos do ponto de amostragem e retorna o rótulo mais utilizado da sua classe como o rótulo previsto. Para problemas de regressão, o algoritmo consulta os *k* pontos mais próximos do ponto de amostragem e retorna a média de seus valores de atributos como o valor previsto. 

O treinamento com o algoritmo k-NN possui três etapas: amostragem, redução de dimensão e criação do índice. A amostragem reduz o tamanho do conjunto de dados inicial para que ele caiba na memória. Para a redução da dimensão, o algoritmo diminui a dimensão do atributo dos dados para reduzir a área de ocupação do modelo k-NN na latência de memória e da inferência. Fornecemos dois métodos de redução de dimensão: projeção aleatória e Johnson-Lindenstrauss transformação rápida. Normalmente, você usa a redução de dimensão para conjuntos de dados altamente dimensionais (d > 1000) para evitar a "maldição da dimensionalidade" que perturba as análises estatísticas de dados que se tornam esparsos à medida que a dimensionalidade aumenta. O principal objetivo do treinamento do k-NN é construir o índice. Esse índice permite pesquisas eficientes de distâncias entre pontos cujos valores ou rótulos de classe ainda não foram determinados e dos k pontos mais próximos a serem usados para inferência.

**Topics**
+ [Input/Output Interface para o algoritmo k-NN](#kNN-input_output)
+ [Cadernos k-NN de exemplo](#kNN-sample-notebooks)
+ [Como funciona o algoritmo k-NN](kNN_how-it-works.md)
+ [Recomendação de instância do EC2 para o algoritmo k-NN](#kNN-instances)
+ [Hiperparâmetros de k-NN](kNN_hyperparameters.md)
+ [Ajustar um modelo k-NN](kNN-tuning.md)
+ [Formatos de dados para entrada de treinamento de k-NN](kNN-in-formats.md)
+ [Formatos de resposta e solicitação para k-NN](kNN-inference-formats.md)

## Input/Output Interface para o algoritmo k-NN
<a name="kNN-input_output"></a>

SageMaker O AI k-NN suporta canais de dados de treinamento e teste.
+ Use um *canal de treinamento* para os dados que você deseja amostrar e construir no índice k-NN.
+ Use um *canal de teste* para emitir pontuações em arquivos de log. Essas pontuações são listadas com uma linha por minilote: precisão para `classifier`, erro quadrático médio (mse) para `regressor` da pontuação.

Para entradas de treinamento, k-NN oferece apoio aos formatos de dados `text/csv` e `application/x-recordio-protobuf`. Para o tipo de entrada `text/csv`, as primeiras `label_size` colunas são interpretadas como o vetor de rótulo dessa linha. É possível usar o modo de Arquivo ou de Pipe para treinar modelos em dados formatados como `recordIO-wrapped-protobuf` ou `CSV`.

Para entradas de inferência, k-NN oferece apoio aos formatos de dados `application/json`, `application/x-recordio-protobuf` e `text/csv`. O formato `text/csv` aceita um `label_size` e um parâmetro de codificação. Ele assume uma `label_size` de 0 e uma UTF-8 codificação.

Para saídas de inferência, k-NN oferece apoio aos formatos de dados `application/json` e `application/x-recordio-protobuf`. Esses dois formatos de dados também oferecem apoio a um modo de saída detalhado. No modo de saída detalhada, a API fornece aos resultados da pesquisa o vetor de distâncias, classificadas da menor para a maior, bem como os elementos correspondentes no vetor de rótulos.

Para transformação em lote, o k-NN oferece apoio ao formato de dados `application/jsonlines` para a entrada e a saída. Veja a seguir um exemplo de entrada:

```
content-type: application/jsonlines

{"features": [1.5, 16.0, 14.0, 23.0]}
{"data": {"features": {"values": [1.5, 16.0, 14.0, 23.0]}}
```

Veja a seguir um exemplo de saída:

```
accept: application/jsonlines

{"predicted_label": 0.0}
{"predicted_label": 2.0}
```

Para obter mais informações sobre formatos de arquivo de entrada e saída, consulte [Formatos de dados para entrada de treinamento de k-NN](kNN-in-formats.md) para treinamento, [Formatos de resposta e solicitação para k-NN](kNN-inference-formats.md) para inferência e os [Cadernos k-NN de exemplo](#kNN-sample-notebooks).

## Cadernos k-NN de exemplo
<a name="kNN-sample-notebooks"></a>

[Para ver um exemplo de caderno que usa o algoritmo SageMaker AI k-Nearest Neighbor para prever tipos de cobertura selvagem a partir de dados geológicos e de serviços florestais, consulte o Neighbor Covertype. K-Nearest ](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/k_nearest_neighbors_covtype/k_nearest_neighbors_covtype.html) 

Use uma instância do notebook Jupyter para executar o exemplo em SageMaker IA. Para saber como criar e abrir uma instância do notebook Jupyter na SageMaker IA, consulte. [Instâncias de SageMaker notebook da Amazon](nbi.md) Depois de criar uma instância de notebook e abri-la, selecione a guia **Exemplos de SageMaker IA** para ver uma lista de todos os cadernos de exemplo de SageMaker IA. Encontre cadernos K-Nearest Neighbor na seção **Introdução aos algoritmos da Amazon**. Para abrir um caderno, clique em sua guia **Uso** e selecione **Criar cópia**.

## Recomendação de instância do EC2 para o algoritmo k-NN
<a name="kNN-instances"></a>

Recomendamos treinar em uma instância de CPU (como ml.m5.2xlarge) ou em uma instância de GPU. O algoritmo k-NN oferece apoio às famílias de instâncias de GPU P2, P3, G4dn e G5 para treinamento e inferência.

As solicitações de inferência de CPUs geralmente têm uma latência média menor do que as solicitações de GPUs, pois há uma sobrecarga na CPU-to-GPU comunicação quando você usa hardware de GPU. No entanto, as GPUs geralmente têm maior throughput para lotes maiores.