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
course content

Contenu du cours

Classification Avec Python

Classification Avec Python

1. Classificateur K-NN
2. Régression Logistique
3. Arbre de Décision
4. Forêt Aléatoire
5. Comparer les Modèles

book
Implémentation de k-NN

KNeighborsClassifier

La mise en œuvre des k-Nearest Neighbors est assez simple. Nous avons seulement besoin d'importer et d'utiliser la classe KNeighborsClassifier.

Une fois que vous avez importé la classe et créé un objet de classe comme ceci :

Vous devez lui fournir les données d'entraînement en utilisant la méthode .fit() :

Et c'est tout ! Vous pouvez maintenant prédire de nouvelles valeurs.

Mise à l'échelle des données

Cependant, rappelez-vous que les données doivent être mises à l'échelle. Regardons de plus près le StandardScaler couramment utilisé pour mettre à l'échelle les données.
StandardScaler soustrait simplement la moyenne de l'échantillon puis divise le résultat par l'écart-type de l'échantillon.

Remarque

Si les termes moyenne de l'échantillon et écart-type de l'échantillon vous sont inconnus, vous pouvez consulter notre Apprendre les statistiques avec Python. Mais il n'est pas obligatoire de comprendre à quoi servent ces chiffres, vous pouvez donc simplement ignorer les significations de et s et continuer :)

Vous devez calculer et s sur l'ensemble d'entraînement (en utilisant soit .fit() soit .fit_transform()) et utiliser les mêmes et s pour prétraiter les données que vous prédisez (en utilisant .transform()). Voici un exemple :

Si vous utilisez différents x̄ et s pour l'ensemble d'entraînement et les nouvelles instances, vos prédictions seront probablement moins précises.

Exemple

Pour effectuer une classification k-NN en Python, vous devez utiliser KNeighborsClassifier et StandardScaler. Votre code ressemblera à ceci :

Voici un exemple simple où nous essayons de prédire si une personne aimera Star Wars VI en fonction de ses évaluations pour Star Wars IV et V. Nous lirons les données à partir de l'URL.

123456789101112131415161718192021
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') X = df[['StarWars4_rate', 'StarWars5_rate']] # Store feature columns as X y = df['StarWars6'] # Store target column as y (contains 1(liked SW 6) or 0(didn't like SW 6) X_new = np.array([[5, 5], [4.5, 4]]) # 2 insances to predict, ratings [5, 5] and [4.5 for Star Wars IV and 4 for V] # Scale the data scaler = StandardScaler() X_scaled = scaler.fit_transform(X) X_new_scaled = scaler.transform(X_new) # Build a model and predict new instances knn = KNeighborsClassifier(n_neighbors=13).fit(X_scaled, y) y_pred = knn.predict(X_new_scaled) print(y_pred)
copy

Les données sont tirées de The Movies Dataset avec un prétraitement supplémentaire. Une personne est considérée comme aimant Star Wars VI si elle l'a noté plus de 4/5.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 4
We're sorry to hear that something went wrong. What happened?
some-alt