Implementació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ˉ (media) y s (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ˉ y s 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ˉ y s 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
.
123456789101112131415161718192021222324252627from 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)
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 4.17
Implementació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ˉ (media) y s (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ˉ y s 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ˉ y s 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
.
123456789101112131415161718192021222324252627from 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)
¡Gracias por tus comentarios!