Outils pour utilisateurs

Outils du site


les_programmes_a_connaitre:algorithmique_premiere:k_plus_proches

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
les_programmes_a_connaitre:algorithmique_premiere:k_plus_proches [2023/01/16 10:05]
fm
les_programmes_a_connaitre:algorithmique_premiere:k_plus_proches [2023/01/16 10:24] (Version actuelle)
fm
Ligne 8: Ligne 8:
 ====Principe de l'algorithme:==== ====Principe de l'algorithme:====
  
-L'algorithme des k plus proche voisins ne nécessite pas de phase d'apprentissage (à proprement parlé), il faut juste stocker le jeu de données d'apprentissage. 
-Soit un ensemble //E// contenant //n// données labelisées: //E//={(//yi//,__xi__)} avec //i// compris entre 1 et //n//, où //yi// correspond à la classe de la donnée //i// et où le vecteur //xi// de dimension //p//(//xi//=(//x1i//,//x2i//,...,//xpi//)) représente les variables prédictrices de la donnée //i//. 
-Soit une donnée //u// qui n'appartient pas à //E// et qui ne possède pas de label (//u// est uniquement caractérisée par un vecteur //xu// de dimension //p//). 
-Soit //d// une fonction qui renvoie la distance entre la donnée //u// et une donnée quelconque appartenant à //E//. 
-Soit un entier //k// inférieur ou égal à //n//. 
 Voici le principe de l'algorithme de //k// plus proches voisins: Voici le principe de l'algorithme de //k// plus proches voisins:
-   -On calcule les distances entre la donnée //u// et chaque donnée appartenant à //E// à l'aide de la fonction //d//+   -On calcule les distances entre la donnée //u// et chaque donnée appartenant au graphique
-   -On retient les //k// données du jeu de données //E// les plus proches de //u//.+   -On retient les //k// données du jeu de données les plus proches de //u//.
    -On attribue à //u// la classe qui est la plus fréquente parmi les //k// données les plus proches.    -On attribue à //u// la classe qui est la plus fréquente parmi les //k// données les plus proches.
-Il est possible d'utiliser différents types de distance si souhaité. 
  
 ====Etude d'un exemple:==== ====Etude d'un exemple:====
Ligne 23: Ligne 17:
 ===Les données:=== ===Les données:===
  
-Comment savoir à quelle espèce appartient une feuille ?+Comment savoir à quelle espèce appartient une pétale ?
  
 Par exemple pour un jeu de donnée s'appelant "iris de Fisher" qui est composé de 50 entrées et pour chaque entrée nous avons: Par exemple pour un jeu de donnée s'appelant "iris de Fisher" qui est composé de 50 entrées et pour chaque entrée nous avons:
-   -La longueur des sépales (en cm) 
-   -La largeur des sépales (en cm) 
    -La longueur des pétales (en cm)    -La longueur des pétales (en cm)
    -La largeur des pétales (en cm)    -La largeur des pétales (en cm)
    -L'espèce d'Iris    -L'espèce d'Iris
-Il est possible de télécharger ces données au format csv.+Il est possible de télécharger ces données au format csv 
 + 
 +{{:les_programmes_a_connaitre:algorithmique_premiere:nsi_prem_knn_1.png?400|}}
  
 ===Bibliothèques Python utilisées:=== ===Bibliothèques Python utilisées:===
Ligne 144: Ligne 138:
 plt.show() plt.show()
 </code> </code>
 +
 +les éléments des tableaux x et y ayant le même indice sont regroupés dans un tuple, nous obtenons bien une liste de tuples.
 +
 +"KNeighborsClassifier" est une méthode issue de la bibliothèque scikit-learn (voir plus haut le "from sklearn.neighbors import KNeighborsClassifier"), cette méthode prend ici en paramètre le nombre de "plus proches voisins" (model = KNeighborsClassifier(n_neighbors=k))
 +
 +"model.fit(d, lab)" permet d'associer les tuples présents dans la liste "d" avec les labels (0 : "iris setosa", 1 : "iris versicolor" ou 2 : "iris virginica"). Par exemple le premier tuple de la liste "d", (1.4, 0.2) est associé au premier label de la liste lab (0), et ainsi de suite...
 +
 +La ligne "prediction= model.predict([[longueur,largeur]])" permet d'effectuer une prédiction pour un couple [longueur, largeur] (dans l'exemple ci-dessus "longueur=2.5" et "largeur=0.75"). La variable "prediction" contient alors le label trouvé par l'algorithme knn. Attention, "predection" est une liste Python qui contient un seul élément (le label), il est donc nécessaire d'écrire "predection[0]" afin d'obtenir le label.
  
 Nous obtenons le résultat suivant (FIGURE 5): Nous obtenons le résultat suivant (FIGURE 5):
les_programmes_a_connaitre/algorithmique_premiere/k_plus_proches.1673859958.txt.gz · Dernière modification: 2023/01/16 10:05 de fm