Skip to content

Python KNN: Dominando la Regresión de Vecinos más Cercanos (KNN) con sklearn

Updated on

En el mundo del aprendizaje automático, un algoritmo que ha ganado una popularidad significativa es el algoritmo de Vecinos más Cercanos (KNN). Cuando se usa para problemas de regresión, este algoritmo generalmente se conoce como regresión KNN. Hoy, exploraremos cómo implementar la regresión KNN usando sklearn en Python, centrándonos específicamente en la clase KNeighborsRegressor.

¿Quieres crear rápidamente visualizaciones de datos desde Dataframe de Pandas en Python sin código?

PyGWalker es una biblioteca de Python para el análisis exploratorio de datos con visualización. PyGWalker (opens in a new tab) puede simplificar su flujo de trabajo de análisis y visualización de datos en Jupyter Notebook, convirtiendo su dataframe de pandas (y dataframe de polars) en una interfaz de usuario similar a Tableau para la exploración visual.

![PyGWalker para visualización de datos] (https://user-images.githubusercontent.com/8137814/221879671-70379d15-81ac-44b9-b267-a8fa3842a0d9.png) (opens in a new tab)

¿Qué es la Regresión KNN?

La Regresión del Vecino más Cercano es un método no paramétrico usado para problemas de predicción. Opera sobre la premisa de que valores de entrada similares probablemente producen valores de salida similares. En el contexto de la regresión, KNN toma un número específico (K) de los puntos de datos (vecinos) más cercanos y promedia sus valores para hacer una predicción.

El Regresor Sklearn del Vecino más Cercano (KNN)

Sklearn, o Scikit-learn, es una biblioteca de Python ampliamente utilizada para el aprendizaje automático. Proporciona implementaciones fáciles de usar de muchos algoritmos populares, y el regresor KNN no es una excepción. En Sklearn, la regresión KNN se implementa a través de la clase KNeighborsRegressor.

Para usar KNeighborsRegressor, primero lo importamos:

from sklearn.neighbors import KNeighborsRegressor

Luego, creamos una instancia de la clase, pasando el número deseado de vecinos como argumento:

knn_regressor = KNeighborsRegressor(n_neighbors=3)

Finalmente, podemos ajustar nuestro modelo a los datos y hacer predicciones:

knn_regressor.fit(X_train, y_train)
predictions = knn_regressor.predict(X_test)

Ajustar el Modelo de Regresión KNN de Sklearn

Un aspecto importante de usar KNN con sklearn es elegir el número adecuado de vecinos (K). Muy pocos vecinos pueden llevar al sobreajuste, mientras que demasiados pueden llevar al subajuste. A menudo es una buena idea experimentar con diferentes valores de K y comparar los resultados.

for k in range(1, 10):
    knn_regressor = KNeighborsRegressor(n_neighbors=k)
    knn_regressor.fit(X_train, y_train)
    print(f'Puntuación para k={k}: {knn_regressor.score(X_test, y_test)}')

. No traduzcas los códigos que comienzan con la palabra "import". Si hay una frontmatter, traduce el contenido en el frontmatter, no los parámetros. Si hay un componente jsonld, asegúrate de traducir también el contenido de json-ld. Este código generará la puntuación de precisión para cada valor de K, lo que nos permitirá elegir el mejor.

Regresión KNN con Sklearn en la Práctica

Ahora veamos un ejemplo completo de regresión KNN en Python con Sklearn. Utilizaremos el conjunto de datos Boston Housing, un conjunto de datos popular para problemas de regresión.

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
 
# Cargar el conjunto de datos
boston = load_boston()
X = boston.data
y = boston.target
 
# Dividir el conjunto de datos en conjuntos de capacitación y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
 
# Aplicar la regresión KNN
knn_regressor = KNeighborsRegressor(n_neighbors=3)
knn_regressor.fit(X_train, y_train)
predictions = knn_regressor.predict(X_test)
 
# Evaluar el modelo
print('Puntuación:', knn_regressor.score(X_test, y_test))

El método score() nos da el coeficiente de determinación R^2 de la predicción.

Conclusión

Comprender la regresión KNN y cómo implementarla en Python usando KNeighborsRegressor de Sklearn es una habilidad valiosa para cualquier científico de datos. Al aprovechar esta poderosa herramienta, puede aprovechar el aprendizaje basado en vecindarios para hacer predicciones precisas en sus datos.

Si bien hemos presentado lo básico aquí, hay mucho más que explorar con Sklearn y la regresión KNN. ¡Feliz experimentación y que sus vecinos siempre lo guíen hacia las predicciones correctas!