Outils pour utilisateurs

Outils du site


nsi:premiere:knn:iris

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édentesRévision précédente
Prochaine révision
Révision précédente
nsi:premiere:knn:iris [2023/03/23 12:06] – [Fonctions utiles] goupillwikinsi:premiere:knn:iris [2023/04/06 14:58] (Version actuelle) goupillwiki
Ligne 138: Ligne 138:
 <code python> <code python>
 def liste_distances(data, a_etiqueter): def liste_distances(data, a_etiqueter):
-   ''' +    ''' 
-   data: données de la base d'entraînement +    data: données de la base d'entraînement 
-   a_etiqueter: individu à étiqueter +    a_etiqueter: individu à étiqueter 
-   renvoie un tableau constitué de paires (distance, espèce) pour +    renvoie un tableau constitué de paires (distance, espèce) pour 
-   chaque individu de la base +    chaque individu de la base 
-   '''+    '''
 </code> </code>
  
Ligne 197: Ligne 197:
 assert knn(3, data, it1) == 'setosa' assert knn(3, data, it1) == 'setosa'
 </code> </code>
- 
- 
- 
- 
-=== Trier === 
- 
-On sait calculer la distance $d_i$ entre l'inconnu $x$ et n'importe quel individu $i$ de nos données. On a besoin d'une fonction qui : 
- 
-  * calcule toutes les distances $d_i$, 
-  * extrait les $k$ plus petites de ces distances avec les individus associés, 
-  * renvoie la catégorie de chacun des $k$ individus ayant la plus petite distance avec $x$. 
- 
-Appelons ''%%select_knn(inconnu, individus, k)%%'' cette fonction. 
- 
-== Exemple d'implémentation == 
- 
-<Code:python> 
-def categorie(individu): 
-    ''' 
-    fonction dépendant des choix faits dans le problème 
-    considéré et qui se contente de renvoyer la catégorie 
-    assignée à cet individu. 
-    ''' 
-    # simple exemple pour les iris : 
-    return individu['species'] 
- 
-def select_knn(inconnu, individus, k): 
-    # création de paires (distance, categorie) 
-    paires = [ (distance(inconnu, individu), categorie(individu)) for individu in individus] 
-    # tri des paires en triant selon la distance, c'est à dire paire[0] 
-    paires.sort(key=lambda paire: paire[0]) 
-    # lecture des k premiers en ne relevant que la catégorie (paire[1]) 
-    return [paire[1] for paire in paires[:k]] 
-</Code> 
- 
-=== Majoritaire === 
- 
-On dispose d'une liste de $k$ étiquettes de catégorie. Il ne reste qu'à compter la catégorie majoritaire. 
- 
-Appelons ''%%get_majoritaire(categories)%%'' cette fonction. 
- 
-=== Tout ensemble === 
- 
-Toutes les fonctions étant définies, la fonction ''%%knn%%'' qui pour un individu renvoie sa catégorie serait en Python : 
- 
-<Code:python> 
-individus = get_data() # individus du fichier d'entraînement 
- 
-def knn(inconnu, individus, k): 
-    categories = select_knn(inconnu, individus, k) 
-    m = select_majoritaire(categories) 
-    return m 
-</Code> 
  
nsi/premiere/knn/iris.1679569582.txt.gz · Dernière modification : de goupillwiki