TP KNN

Algorithmique

🦊

Travaux Pratiques : Algorithme des K Plus Proches Voisins (KNN)

Objectif

L'objectif de ce TP est de mettre en pratique l'algorithme des K Plus Proches Voisins (KNN) sur de petits ensembles de données, en partant de zéro.

Exercice 1 : Douceur d'un fruit

Contexte

Nous avons des données sur des fruits, caractérisés par leur douceur (1 à 10) et leur acidité (1 à 10). Nous voulons prédire si un nouveau fruit est une "Pomme" ou une "Orange".

Données d'entraînement :

FruitDouceurAciditéType
Fruit 173Pomme
Fruit 282Pomme
Fruit 337Orange
Fruit 448Orange
Fruit 564Pomme
Fruit 626Orange

Nouveau fruit à classifier : Fruit X (Douceur = 5, Acidité = 5)

À réaliser
  1. Représenter les données : Créer une liste de dictionnaires pour stocker les données d'entraînement.

  2. Calculer la distance euclidienne : Écrire une fonction distance_euclidienne(point1, point2) qui prend deux points (chacun étant un tuple ou une liste de coordonnées [douceur, acidite]) et retourne leur distance. Rappel : d=(x2x1)2+(y2y1)2d = \sqrt{(x_2-x_1)^2 + (y_2-y_1)^2}

  3. Trouver les K voisins : Écrire une fonction trouver_voisins(donnees, point_test, k) qui :

    • Calcule la distance entre point_test et chaque point dans donnees.
    • Stocke ces distances avec les types de fruits.
    • Trie les voisins par distance croissante.
    • Retourne les k premiers voisins.
  4. Prédire la classe : Écrire une fonction predire_classe(voisins) qui retourne la classe majoritaire.

  5. Mettre tout ensemble : Prédire la classe du Fruit X avec K=3.

Exercice 2 : Classification de fleurs Iris (simplifié)

Contexte

Nous allons appliquer KNN à un ensemble simplifié de fleurs Iris, caractérisées par la longueur de leurs sépales et pétales. Types : Setosa et Versicolor.

Données d'entraînement :

FleurLongueur SépaleLongueur PétaleType
Fleur A5.11.4Setosa
Fleur B4.91.4Setosa
Fleur C6.05.1Versicolor
Fleur D5.54.0Versicolor
Fleur E5.21.5Setosa
Fleur F6.34.8Versicolor

Nouvelle fleur : Fleur Y (Sépale = 5.8, Pétale = 3.5)

À réaliser
  1. Représenter les données : Liste de dictionnaires.
  2. Calculer la distance : Réutiliser votre fonction (avec [longueur_sepale, longueur_petale]).
  3. Trouver les K voisins : Trouver les voisins de la Fleur Y.
  4. Prédire : Prédire la classe de la Fleur Y avec K=5.

Exercice 3 : Détection de spam (conceptuel)

Contexte

Système simplifié de détection de spam. Mesures : Nombre de mots clés suspects et Longueur de l'email (échelle 1-10).

Données :

EmailMots clésLongueurType
Email 189Spam
Email 223Non-Spam
Email 378Spam
Email 412Non-Spam
Email 597Spam
Email 634Non-Spam

Nouvel email : Email Z (Mots clés = 6, Longueur = 6)

À réaliser
  1. Représenter les données.
  2. Utiliser vos fonctions KNN pour prédire la classe de l'Email Z avec K=3.