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 | Sección
Fundamentos del Aprendizaje Supervisado

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.

Constructor:

  • KNeighborsClassifier(n_neighbors = 5)
  • n_neighbors – número de vecinos (k). El valor predeterminado es 5;

Métodos:

  • fit(X, y) – Ajusta el conjunto de entrenamiento;
  • predict(X) – Predice la clase para X;
  • score(X, y) – Devuelve la precisión para el conjunto X, y.

Una vez que se ha importado la clase y creado un objeto de 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)

¡Y eso es todo! Ahora se pueden predecir nuevos valores.

y_pred = knn.predict(X_new_scaled)

Escalado de los datos

Sin embargo, recuerde que los datos deben ser escalados. StandardScaler se utiliza comúnmente para este propósito:

Constructor:

  • StandardScaler().

Métodos:

  • fit(X) – calcula xˉ\bar{x} y ss para X;
  • transform(X) – devuelve XscaledX_{\text{scaled}} utilizando xˉ,s\bar{x}, s de .fit();
  • fit_transform(X).fit(X) seguido de .transform(X).

Debe calcular xˉ\bar x y ss solo en el conjunto de entrenamiento utilizando .fit() o .fit_transform(). Luego use .transform() en el conjunto de prueba para que ambos conjuntos estén escalados de manera idéntica:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

Utilizar valores de escalado diferentes para entrenamiento y prueba perjudica las predicciones.

Ejemplo

Se predice si una persona disfruta Star Wars VI utilizando sus valoraciones para los Episodios IV y V (de The Movies Dataset). Después de entrenar, se prueban dos usuarios: uno calificó IV/V como 5 y 5, el otro como 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 clases 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 17

Pregunte a AI

expand

Pregunte a AI

ChatGPT

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

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.

Constructor:

  • KNeighborsClassifier(n_neighbors = 5)
  • n_neighbors – número de vecinos (k). El valor predeterminado es 5;

Métodos:

  • fit(X, y) – Ajusta el conjunto de entrenamiento;
  • predict(X) – Predice la clase para X;
  • score(X, y) – Devuelve la precisión para el conjunto X, y.

Una vez que se ha importado la clase y creado un objeto de 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)

¡Y eso es todo! Ahora se pueden predecir nuevos valores.

y_pred = knn.predict(X_new_scaled)

Escalado de los datos

Sin embargo, recuerde que los datos deben ser escalados. StandardScaler se utiliza comúnmente para este propósito:

Constructor:

  • StandardScaler().

Métodos:

  • fit(X) – calcula xˉ\bar{x} y ss para X;
  • transform(X) – devuelve XscaledX_{\text{scaled}} utilizando xˉ,s\bar{x}, s de .fit();
  • fit_transform(X).fit(X) seguido de .transform(X).

Debe calcular xˉ\bar x y ss solo en el conjunto de entrenamiento utilizando .fit() o .fit_transform(). Luego use .transform() en el conjunto de prueba para que ambos conjuntos estén escalados de manera idéntica:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

Utilizar valores de escalado diferentes para entrenamiento y prueba perjudica las predicciones.

Ejemplo

Se predice si una persona disfruta Star Wars VI utilizando sus valoraciones para los Episodios IV y V (de The Movies Dataset). Después de entrenar, se prueban dos usuarios: uno calificó IV/V como 5 y 5, el otro como 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 clases 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 17
some-alt