Ci-dessous, les différences entre deux révisions de la page.
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 [2022/05/14 10:17] bs |
les_programmes_a_connaitre:algorithmique_premiere:k_plus_proches [2023/01/16 10:24] (Version actuelle) fm |
||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
L' | L' | ||
- | C'est un algorithme simple a appréhender. | + | C'est un algorithme simple a appréhender, |
- | Les apprentissages automatique ne date pas d'hier et ont connu un fort regain d' | + | |
- | C'est un algorithme d'apprentissage supervisé qui permet de classer de nouvelles données | + | |
- | Les GAFAM utilisent également les données concernant les utilisateurs afin de " | + | |
====Principe de l' | ====Principe de l' | ||
- | L' | ||
- | Soit un ensemble //E// contenant //n// données labelisées: | ||
- | Soit une donnée //u// qui n' | ||
- | 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' | Voici le principe de l' | ||
- | -On calcule les distances entre la donnée //u// et chaque donnée appartenant | + | -On calcule les distances entre la donnée //u// et chaque donnée appartenant |
- | -On retient les //k// données du jeu de données | + | -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' | ||
====Etude d'un exemple: | ====Etude d'un exemple: | ||
===Les données: | ===Les données: | ||
+ | |||
+ | Comment savoir à quelle espèce appartient une pétale ? | ||
Par exemple pour un jeu de donnée s' | Par exemple pour un jeu de donnée s' | ||
- | -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) | ||
| | ||
- | 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 : |
- | Ensuite il faut les modifier à l'aide d'un tableur: | + | {{:les_programmes_a_connaitre: |
- | -Nous supprimons les colones qui ne nous intéresse pas afin de garder seulement celles qui nous intéresse. | + | |
- | -Il faut égallement encoder les espèces avec des chiffres (0,1,2,...) | + | |
===Bibliothèques Python utilisées: | ===Bibliothèques Python utilisées: | ||
Ligne 150: | Ligne 139: | ||
</ | </ | ||
- | Nous obtenons | + | 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. |
- | {{https:// | + | " |
+ | " | ||
+ | La ligne " | ||
- | Cet algorithme "__k ppv__" | + | Nous obtenons le résultat suivant |
- | Il fonctionne en deux parties, tout d' | + | |
- | parmi les k plus proches voisins, on détermine quel est le groupe de données majoritaires. | + | |
- | | + | |
- | Exemple d' | + | {{https://pixees.fr/ |
- | <code python> | + | FIGURE 5 - A l'aide de scikit-learn |
- | import pandas | + | |
- | import matplotlib.pyplot as plt | + | |
- | from sklearn.neighbors import KNeighborsClassifier | + | |
- | #traitement CSV | + | Il est également possible de modifier le programme ci-dessus afin d' |
- | iris=pandas.read_csv(" | + | |
- | x=iris.loc[:," | + | |
- | y=iris.loc[:," | + | |
- | lab=iris.loc[:," | + | |
- | #fin traitement CSV | + | |
- | + | ||
- | #valeurs | + | |
- | longueur=2.5 | + | |
- | largeur=0.75 | + | |
- | k=3 | + | |
- | #fin valeurs | + | |
- | + | ||
- | # | + | |
- | plt.scatter(x[lab == 0], y[lab == 0], color=' | + | |
- | plt.scatter(x[lab == 1], y[lab == 1], color=' | + | |
- | plt.scatter(x[lab == 2], y[lab == 2], color=' | + | |
- | plt.scatter(longueur, largeur, color=' | + | |
- | plt.legend() | + | |
- | #fin graphique | + | |
- | + | ||
- | #algo kppv | + | |
- | d=list(zip(x, | + | |
- | model = KNeighborsClassifier(n_neighbors=k) | + | |
- | model.fit(d, | + | |
- | prediction= model.predict([[longueur, | + | |
- | #fin algo kppv | + | |
- | + | ||
- | #Affichage résultats | + | |
- | txt=" | + | |
- | if prediction[0]==0: | + | |
- | txt=txt+" | + | |
- | if prediction[0]==1: | + | |
- | txt=txt+" | + | |
- | if prediction[0]==2: | + | |
- | txt=txt+" | + | |
- | plt.text(3, | + | |
- | plt.text(3, | + | |
- | plt.text(3, | + | |
- | #fin affichage résultats | + | |
- | + | ||
- | plt.show() | + | |
- | </ | + |