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.