Introdução
Neste projeto, você aprenderá como implementar o algoritmo de regressão K-Vizinhos Mais Próximos (KNN) usando Python. KNN é um método de aprendizado de máquina amplamente utilizado, comumente empregado para problemas de classificação. No entanto, ele também pode ser aplicado a tarefas de regressão, onde o objetivo é prever um valor alvo contínuo.
🎯 Tarefas
Neste projeto, você aprenderá:
- Como entender o algoritmo de regressão KNN e seu princípio de funcionamento
- Como implementar o algoritmo de regressão KNN em Python
- Como calcular as distâncias euclidianas (Euclidean distances) entre os dados de teste e os dados de treinamento
- Como identificar os k vizinhos mais próximos e recuperar seus valores alvo
- Como calcular a média dos valores alvo dos k vizinhos mais próximos para prever a saída para os dados de teste
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Implementar o algoritmo de regressão KNN do zero usando Python
- Usar a distância euclidiana (Euclidean distance) como uma medida de distância no algoritmo KNN
- Aplicar o algoritmo de regressão KNN para prever valores alvo contínuos
- Demonstrar habilidades práticas na implementação de algoritmos de aprendizado de máquina
Implementar o Algoritmo de Regressão KNN
Nesta etapa, você aprenderá como implementar o algoritmo de regressão K-Vizinhos Mais Próximos (KNN) usando Python. Siga as etapas abaixo para concluir esta etapa:
Abra o arquivo
knn_regression.pyno seu editor de código preferido.Localize a função
knn(train_data, train_labels, test_data, k). Esta função será a principal implementação do algoritmo de regressão KNN.O parâmetro
train_datasão os dados de características (feature data) de amostras conhecidas,train_labelssão os valores alvo (target values) de amostras conhecidas,test_datasão os dados de características de uma única amostra desconhecida, ekrepresenta o número de vizinhos mais próximos usados em K-vizinhos mais próximos.Dentro da função
knn(), comece calculando as distâncias euclidianas (Euclidean distances) entretest_datae todas as amostras de treinamento. Você pode usar as funçõesnumpy.sqrt()enumpy.sum()para calcular as distâncias euclidianas.
distances = np.sqrt(np.sum((train_data - test_data) ** 2, axis=1))
- Em seguida, obtenha os índices dos
kvizinhos mais próximos, ordenando as distâncias e pegando os primeiroskíndices.
nearest_indices = np.argsort(distances)[:k]
- Recupere os rótulos (labels) dos
kvizinhos mais próximos usandonearest_indices.
nearest_labels = train_labels[nearest_indices]
- Calcule a média dos rótulos dos
kvizinhos mais próximos para obter o valor alvo previsto para a única amostra desconhecidatest_data.
predicted_label = np.mean(nearest_labels)
- Arredonde o rótulo previsto para no máximo 2 casas decimais usando a função
round().
predicted_label = round(predicted_label, 2)
- Finalmente, retorne o valor alvo previsto para a única amostra desconhecida
test_data.
return predicted_label
- Salve o arquivo
knn_regression.py.
Testar o Algoritmo de Regressão KNN
Nesta etapa, você testará a implementação do algoritmo de regressão KNN executando o exemplo fornecido.
Abra o arquivo knn_regression.py no seu editor de código.
Adicione os seguintes casos de teste no final do arquivo:
if __name__ == "__main__":
train_data = np.array(
[[1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10]]
)
train_labels = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
test_data = np.array([[1.2, 1.3]])
result = knn(train_data, train_labels, test_data, k=3)
print(result)
Execute o seguinte comando para executar o exemplo:
python3 knn_regression.py
A saída deve ser o valor alvo previsto para a única amostra desconhecida, arredondado para no máximo 2 casas decimais.
2.0
Parabéns! Você implementou com sucesso o algoritmo de regressão KNN e o testou com o exemplo fornecido.
Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.



