Regressão de Vizinhos Mais Próximos

Beginner

This tutorial is from open-source community. Access the source code

Introdução

A Regressão dos Vizinhos Mais Próximos é um algoritmo de aprendizagem de máquina que prevê o valor de um novo ponto de dados encontrando os k pontos de dados mais próximos no conjunto de treino e utilizando o valor médio deles para prever o novo valor. Neste laboratório, utilizaremos o scikit-learn para demonstrar como resolver um problema de regressão utilizando um Vizinho Mais Próximo (k-Nearest Neighbor) e a interpolação do alvo usando pesos de baricentro e constantes.

Dicas da Máquina Virtual

Após o arranque da máquina virtual, clique no canto superior esquerdo para mudar para a aba Notebook para aceder ao Jupyter Notebook para a prática.

Por vezes, pode ser necessário esperar alguns segundos para o Jupyter Notebook terminar de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se tiver problemas durante a aprendizagem, não hesite em contactar o Labby. Forneça feedback após a sessão e resolveremos o problema rapidamente para si.

Gerar Dados de Amostra

Primeiro, geramos dados de amostra para usar no nosso problema de regressão. Criamos um array de 40 pontos de dados com 1 característica e, em seguida, criamos um array de destino aplicando a função seno aos dados. Também adicionamos algum ruído a cada 5.º ponto de dados.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import neighbors

np.random.seed(0)
X = np.sort(5 * np.random.rand(40, 1), axis=0)
T = np.linspace(0, 5, 500)[:, np.newaxis]
y = np.sin(X).ravel()

## Adicionar ruído aos alvos
y[::5] += 1 * (0.5 - np.random.rand(8))

Ajustar o Modelo de Regressão

Em seguida, ajustamos o nosso modelo de regressão aos dados de amostra utilizando 5 vizinhos e pesos uniformes e de distância. Usamos um loop for para iterar sobre cada tipo de peso e criar um gráfico de dispersão dos pontos de dados e um gráfico de linhas dos valores previstos usando o método predict do modelo ajustado.

n_neighbors = 5

for i, weights in enumerate(["uniform", "distance"]):
    knn = neighbors.KNeighborsRegressor(n_neighbors, weights=weights)
    y_ = knn.fit(X, y).predict(T)

    plt.subplot(2, 1, i + 1)
    plt.scatter(X, y, color="darkorange", label="data")
    plt.plot(T, y_, color="navy", label="prediction")
    plt.axis("tight")
    plt.legend()
    plt.title("KNeighborsRegressor (k = %i, weights = '%s')" % (n_neighbors, weights))

plt.tight_layout()
plt.show()

Resumo

Neste laboratório, demonstramos como utilizar o algoritmo de Regressão dos Vizinhos Mais Próximos para prever os valores de novos pontos de dados com base nos k-vizinhos mais próximos no conjunto de treino. Utilizámos a biblioteca scikit-learn para gerar dados de amostra e ajustar o nosso modelo de regressão utilizando pesos uniformes e de distância. Em seguida, representámos graficamente os pontos de dados e os valores previstos para visualizar a precisão do nosso modelo.