Introducción
La regresión de vecinos más cercanos es un algoritmo de aprendizaje automático que predice el valor de un nuevo punto de datos encontrando los k puntos de datos más cercanos en el conjunto de entrenamiento y utilizando su valor promedio para predecir el nuevo valor. En este laboratorio, usaremos scikit-learn para demostrar cómo resolver un problema de regresión utilizando un vecino más cercano y la interpolación del objetivo utilizando tanto pesos baricéntricos como constantes.
Consejos sobre la VM
Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.
A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.
Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.
Generar datos de muestra
Primero generamos datos de muestra para utilizar en nuestro problema de regresión. Creamos una matriz de 40 puntos de datos con 1 característica, y luego creamos una matriz de objetivos aplicando la función seno a los datos. También agregamos algo de ruido a cada 5º punto de datos.
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()
## Add noise to targets
y[::5] += 1 * (0.5 - np.random.rand(8))
Ajustar el modelo de regresión
Luego ajustamos nuestro modelo de regresión a los datos de muestra utilizando 5 vecinos y pesos uniformes y de distancia. Utilizamos un bucle for para iterar sobre cada tipo de peso y crear un diagrama de dispersión de los puntos de datos y un diagrama de líneas de los valores predichos utilizando el método predict del 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()
Resumen
En este laboratorio, demostramos cómo utilizar el algoritmo de regresión de vecinos más cercanos para predecir los valores de nuevos puntos de datos basados en los k-vecinos más cercanos en el conjunto de entrenamiento. Utilizamos scikit-learn para generar datos de muestra y ajustar nuestro modelo de regresión utilizando pesos uniformes y de distancia. Luego graficamos los puntos de datos y los valores predichos para visualizar la precisión de nuestro modelo.