Regresión de Vecinos Más Cercanos

Beginner

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

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.