Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Implementación de k-NN | Clasificador K-NN
Clasificación con Python

bookImplementación de k-NN

KNeighborsClassifier

La implementación de k-Nearest Neighbors es bastante sencilla. Solo es necesario importar y utilizar la clase KNeighborsClassifier.

Una vez importada la clase y creado un objeto de la clase de la siguiente manera:

# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)

Es necesario proporcionarle los datos de entrenamiento utilizando el método .fit():

knn.fit(X_scaled, y)

¡Eso es todo! Ahora es posible predecir nuevos valores.

y_pred = knn.predict(X_new_scaled)

Escalado de los datos

Sin embargo, es importante recordar que los datos deben estar escalados. StandardScaler se utiliza comúnmente para este propósito:

Debe calcular xˉ\bar x (media) y ss (desviación estándar) en el conjunto de entrenamiento utilizando el método .fit() o .fit_transform(). Este paso garantiza que los parámetros de escalado se deriven de los datos de entrenamiento.

Cuando tenga un conjunto de prueba para predecir, debe usar el mismo xˉ\bar x y ss para preprocesar estos datos usando .transform(). Esta consistencia es crucial porque asegura que los datos de prueba se escalen de la misma manera que los datos de entrenamiento, manteniendo la integridad de las predicciones del modelo.

# Importing the class
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
# Calculating x̄ and s and scaling `X_train`
X_train_scaled = scaler.fit_transform(X_train)
# Scaling `X_test` with x̄ and s calculated in the previous line
X_test_scaled = scaler.transform(X_test)

Si utiliza diferentes xˉ\bar x y ss para el conjunto de entrenamiento y el conjunto de prueba, probablemente sus predicciones serán peores.

Ejemplo

Exploremos un ejemplo sencillo donde buscamos predecir si una persona disfrutará Star Wars VI en función de sus calificaciones para Star Wars IV y V. Los datos se toman de The Movies Dataset con preprocesamiento adicional. Se considera que una persona disfruta Star Wars VI si le da una calificación mayor a 4 (de 5).

Después de entrenar nuestro modelo, haremos predicciones para dos individuos del conjunto de prueba. El primer individuo califica Star Wars IV y V con 5 y 5, respectivamente, mientras que el segundo los califica con 4.5 y 4.

123456789101112131415161718192021222324252627
from sklearn.neighbors import KNeighborsClassifier from sklearn.preprocessing import StandardScaler import numpy as np import pandas as pd import warnings warnings.filterwarnings('ignore') df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/starwars_binary.csv') # Dropping the target column and leaving only features as `X_train` X_train = df.drop('StarWars6', axis=1) # Storing target column as `y_train`, which contains 1 (liked SW 6) or 0 (didn't like SW 6) y_train = df['StarWars6'] # Test set of two people X_test = np.array([[5, 5], [4.5, 4]]) # Scaling the data scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # Building a model and predict new instances knn = KNeighborsClassifier(n_neighbors=13).fit(X_train, y_train) y_pred = knn.predict(X_test) print(y_pred)
copy
question mark

¿Cuáles de los siguientes nombres de clase de scikit-learn se utilizan para implementar el clasificador de vecinos más cercanos (k-Nearest Neighbors) y para escalar características al preparar los datos para k-NN?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 4

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 4.17

bookImplementación de k-NN

Desliza para mostrar el menú

KNeighborsClassifier

La implementación de k-Nearest Neighbors es bastante sencilla. Solo es necesario importar y utilizar la clase KNeighborsClassifier.

Una vez importada la clase y creado un objeto de la clase de la siguiente manera:

# Importing the class
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)

Es necesario proporcionarle los datos de entrenamiento utilizando el método .fit():

knn.fit(X_scaled, y)

¡Eso es todo! Ahora es posible predecir nuevos valores.

y_pred = knn.predict(X_new_scaled)

Escalado de los datos

Sin embargo, es importante recordar que los datos deben estar escalados. StandardScaler se utiliza comúnmente para este propósito:

Debe calcular xˉ\bar x (media) y ss (desviación estándar) en el conjunto de entrenamiento utilizando el método .fit() o .fit_transform(). Este paso garantiza que los parámetros de escalado se deriven de los datos de entrenamiento.

Cuando tenga un conjunto de prueba para predecir, debe usar el mismo xˉ\bar x y ss para preprocesar estos datos usando .transform(). Esta consistencia es crucial porque asegura que los datos de prueba se escalen de la misma manera que los datos de entrenamiento, manteniendo la integridad de las predicciones del modelo.

# Importing the class
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
# Calculating x̄ and s and scaling `X_train`
X_train_scaled = scaler.fit_transform(X_train)
# Scaling `X_test` with x̄ and s calculated in the previous line
X_test_scaled = scaler.transform(X_test)

Si utiliza diferentes xˉ\bar x y ss para el conjunto de entrenamiento y el conjunto de prueba, probablemente sus predicciones serán peores.

Ejemplo

Exploremos un ejemplo sencillo donde buscamos predecir si una persona disfrutará Star Wars VI en función de sus calificaciones para Star Wars IV y V. Los datos se toman de The Movies Dataset con preprocesamiento adicional. Se considera que una persona disfruta Star Wars VI si le da una calificación mayor a 4 (de 5).

Después de entrenar nuestro modelo, haremos predicciones para dos individuos del conjunto de prueba. El primer individuo califica Star Wars IV y V con 5 y 5, respectivamente, mientras que el segundo los califica con 4.5 y 4.

123456789101112131415161718192021222324252627
from sklearn.neighbors import KNeighborsClassifier from sklearn.preprocessing import StandardScaler import numpy as np import pandas as pd import warnings warnings.filterwarnings('ignore') df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/starwars_binary.csv') # Dropping the target column and leaving only features as `X_train` X_train = df.drop('StarWars6', axis=1) # Storing target column as `y_train`, which contains 1 (liked SW 6) or 0 (didn't like SW 6) y_train = df['StarWars6'] # Test set of two people X_test = np.array([[5, 5], [4.5, 4]]) # Scaling the data scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # Building a model and predict new instances knn = KNeighborsClassifier(n_neighbors=13).fit(X_train, y_train) y_pred = knn.predict(X_test) print(y_pred)
copy
question mark

¿Cuáles de los siguientes nombres de clase de scikit-learn se utilizan para implementar el clasificador de vecinos más cercanos (k-Nearest Neighbors) y para escalar características al preparar los datos para k-NN?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 4
some-alt