Text Mining with Scikit-Learn – Classification – KNN with Grid Search

Posted by


En este tutorial, vamos a explorar cómo usar el algoritmo de clasificación K vecinos más cercanos (KNN) con la técnica de búsqueda de cuadrícula (Grid Search) para optimizar los hiperparámetros y mejorar la precisión de nuestro modelo. Usaremos la biblioteca de aprendizaje automático de Python, Scikit-Learn, que es una herramienta poderosa para la minería de datos y el aprendizaje automático.

Paso 1: Instalar Scikit-Learn

Lo primero que debemos hacer es asegurarnos de tener instalada la biblioteca Scikit-Learn en nuestro entorno de Python. Si aún no lo has hecho, puedes instalarlo usando pip:

pip install scikit-learn

Paso 2: Importar las bibliotecas necesarias

Una vez que tenemos instalada Scikit-Learn, importamos las bibliotecas necesarias en nuestro código. También importamos el dataset que vamos a utilizar para este ejercicio:

import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import accuracy_score

Paso 3: Cargar y explorar el dataset

En este ejemplo, utilizaremos el dataset de Iris, que es un conjunto de datos clásico en la minería de datos y el aprendizaje automático. Cargamos el dataset y exploramos sus características:

iris = load_iris()
X = iris.data
y = iris.target

Paso 4: Dividir el dataset en conjuntos de entrenamiento y prueba

Antes de entrenar nuestro modelo, debemos dividir nuestro dataset en conjuntos de entrenamiento y prueba. Utilizaremos la función train_test_split de Scikit-Learn para dividir los datos en un 70% para entrenamiento y un 30% para prueba:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

Paso 5: Escalar los datos

Es importante escalar los datos antes de aplicar el algoritmo de K vecinos más cercanos para evitar que las características con magnitudes diferentes dominen el algoritmo. Utilizaremos la función StandardScaler de Scikit-Learn para llevar todas las características a la misma escala:

scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

Paso 6: Entrenar el modelo KNN

Ahora estamos listos para entrenar nuestro modelo KNN. Creamos una instancia de KNeighborsClassifier y ajustamos el modelo a nuestros datos de entrenamiento:

knn = KNeighborsClassifier()
knn.fit(X_train, y_train)

Paso 7: Evaluar el modelo sin Grid Search

Antes de aplicar Grid Search para optimizar los hiperparámetros, evaluamos la precisión de nuestro modelo KNN sin optimización de hiperparámetros utilizando el conjunto de pruebas:

y_pred = knn.predict(X_test)
print('Accuracy sin Grid Search:', accuracy_score(y_test, y_pred))

Paso 8: Aplicar Grid Search para optimizar hiperparámetros

Ahora aplicaremos la técnica de búsqueda de cuadrícula (Grid Search) para optimizar los hiperparámetros de nuestro modelo KNN. Específicamente, optimizaremos el número de vecinos (n_neighbors) y el tipo de métrica de distancia (p) que se utiliza en el algoritmo KNN. Definimos una cuadrícula de parámetros para buscar:

param_grid = {
    'n_neighbors': [3, 5, 7, 9],
    'p': [1, 2]
}

Luego creamos una instancia de GridSearchCV y ajustamos la cuadrícula a los datos de entrenamiento:

grid_search = GridSearchCV(knn, param_grid, cv=5)
grid_search.fit(X_train, y_train)

Paso 9: Evaluar el modelo con Grid Search

Una vez que se han realizado todas las combinaciones posibles de valores de hiperparámetros y se ha seleccionado el mejor modelo, evaluamos la precisión del modelo optimizado utilizando el conjunto de pruebas:

y_pred_grid = grid_search.predict(X_test)
print('Accuracy con Grid Search:', accuracy_score(y_test, y_pred_grid))

Conclusión

En este tutorial, hemos explorado cómo aplicar el algoritmo KNN con la técnica de búsqueda de cuadrícula (Grid Search) para optimizar los hiperparámetros de nuestro modelo y mejorar su precisión. La optimización de los hiperparámetros es una parte crucial del proceso de modelado de aprendizaje automático, ya que puede mejorar significativamente la precisión de los modelos. Espero que este tutorial te haya sido útil y te motive a explorar más sobre la minería de datos y el aprendizaje automático con Scikit-Learn. ¡Buena suerte!

0 0 votes
Article Rating

Leave a Reply

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x