Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Implémentation de k-NN | Classificateur k-NN
Classification avec Python

bookImplémentation de k-NN

KNeighborsClassifier

L’implémentation de k-Nearest Neighbors est relativement simple. Il suffit d’importer et d’utiliser la classe KNeighborsClassifier.

Après avoir importé la classe et créé un objet de classe comme ceci :

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

Il est nécessaire de fournir les données d’entraînement à l’aide de la méthode .fit() :

knn.fit(X_scaled, y)

Et c’est tout ! Il est maintenant possible de prédire de nouvelles valeurs.

y_pred = knn.predict(X_new_scaled)

Mise à l’échelle des données

Cependant, il est important de rappeler que les données doivent être mises à l’échelle. StandardScaler est couramment utilisé à cette fin :

Vous devez calculer xˉ\bar x (moyenne) et ss (écart type) sur l'ensemble d'entraînement en utilisant soit la méthode .fit(), soit .fit_transform(). Cette étape garantit que les paramètres de mise à l'échelle sont dérivés des données d'entraînement.

Lorsque vous disposez d'un ensemble de test à prédire, vous devez utiliser les mêmes xˉ\bar x et ss pour prétraiter ces données à l'aide de .transform(). Cette cohérence est essentielle car elle garantit que les données de test sont mises à l'échelle de la même manière que les données d'entraînement, maintenant ainsi l'intégrité des prédictions du modèle.

# 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 vous utilisez des xˉ\bar x et ss différents pour l'ensemble d'entraînement et l'ensemble de test, vos prédictions seront probablement moins bonnes.

Exemple

Explorons un exemple simple où l'objectif est de prédire si une personne appréciera Star Wars VI en fonction de ses notes pour Star Wars IV et V. Les données proviennent de The Movies Dataset avec un prétraitement supplémentaire. Une personne est considérée comme appréciant Star Wars VI si elle lui attribue une note supérieure à 4 (sur 5).

Après avoir entraîné notre modèle, nous effectuerons des prédictions pour deux individus de l'ensemble de test. Le premier individu attribue les notes 5 et 5 à Star Wars IV et V respectivement, tandis que le second leur attribue les notes 4.5 et 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

Lesquels des noms de classes suivants de scikit-learn sont utilisés pour implémenter le classificateur des k plus proches voisins et pour normaliser les caractéristiques lors de la préparation des données pour k-NN ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 4

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

Can you explain what the output of the code means?

How do I choose the best value for n_neighbors in KNeighborsClassifier?

Why is it important to scale the data before using KNeighborsClassifier?

Awesome!

Completion rate improved to 4.17

bookImplémentation de k-NN

Glissez pour afficher le menu

KNeighborsClassifier

L’implémentation de k-Nearest Neighbors est relativement simple. Il suffit d’importer et d’utiliser la classe KNeighborsClassifier.

Après avoir importé la classe et créé un objet de classe comme ceci :

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

Il est nécessaire de fournir les données d’entraînement à l’aide de la méthode .fit() :

knn.fit(X_scaled, y)

Et c’est tout ! Il est maintenant possible de prédire de nouvelles valeurs.

y_pred = knn.predict(X_new_scaled)

Mise à l’échelle des données

Cependant, il est important de rappeler que les données doivent être mises à l’échelle. StandardScaler est couramment utilisé à cette fin :

Vous devez calculer xˉ\bar x (moyenne) et ss (écart type) sur l'ensemble d'entraînement en utilisant soit la méthode .fit(), soit .fit_transform(). Cette étape garantit que les paramètres de mise à l'échelle sont dérivés des données d'entraînement.

Lorsque vous disposez d'un ensemble de test à prédire, vous devez utiliser les mêmes xˉ\bar x et ss pour prétraiter ces données à l'aide de .transform(). Cette cohérence est essentielle car elle garantit que les données de test sont mises à l'échelle de la même manière que les données d'entraînement, maintenant ainsi l'intégrité des prédictions du modèle.

# 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 vous utilisez des xˉ\bar x et ss différents pour l'ensemble d'entraînement et l'ensemble de test, vos prédictions seront probablement moins bonnes.

Exemple

Explorons un exemple simple où l'objectif est de prédire si une personne appréciera Star Wars VI en fonction de ses notes pour Star Wars IV et V. Les données proviennent de The Movies Dataset avec un prétraitement supplémentaire. Une personne est considérée comme appréciant Star Wars VI si elle lui attribue une note supérieure à 4 (sur 5).

Après avoir entraîné notre modèle, nous effectuerons des prédictions pour deux individus de l'ensemble de test. Le premier individu attribue les notes 5 et 5 à Star Wars IV et V respectivement, tandis que le second leur attribue les notes 4.5 et 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

Lesquels des noms de classes suivants de scikit-learn sont utilisés pour implémenter le classificateur des k plus proches voisins et pour normaliser les caractéristiques lors de la préparation des données pour k-NN ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 4
some-alt