Mais quel est le poste occupé par ces joueurs ?

Algorithme des K plus proche voisin (K-NN)

Joueurs mystères

Dillon LEWIS


  • Nationalité :
    Pays-de-Galles
  • Age : 23
  • Date de naissance : 04/01/1996
  • Poids : 118 kg
  • Taille : 183 cm

Antoine DUPONT


  • Nationalité :
    Française
  • Age : 23
  • Date de naissance : 19/10/1997
  • Poids : 82 kg
  • Taille : 173 cm

Les données

Pays Nom Poste Age Date de naissance Taille Poids
0 France Cyril BAILLE Pilier 26 15/09/1993 182 116
1 Cameroun Dany PRISO Pilier 25 02/01/1994 182 110
2 Angleterre Maro ITOJE 2ème ligne 25 28/10/1994 196 115
3 France Yacouba CAMARA 3ème ligne 25 02/06/1994 195 112
... ... ... ... ... ... ... ...

Parmi les données disponibles, lesquelles semblent déterminantes dans le choix du poste occupé par un joueur ?

Visualisation des données


Quelle semble être la morphologie d'un pilier ?

Essayer de décrire à la manière d'un algorithme, la façon de classifier en joueur.

Apprentissage machine

5) A partir du fichier Rugby.csv, créer une fonction qui renvoie une liste de dictionnaires construits de la manière suivante :
  • Une clé "label" : qui contient le poste occupé
  • Une clé "caractéritiques" : qui contient un tuple (poids, taille)

La sortie ressemblera donc a :

[{"label":"Pilier","caractéristiques":(182,116)},
 {"label":"Pilier","caractéristiques":(182,110)},  
 {"label":"2ème ligne","caractéristiques":(196,115)),  
 ... 
]
Complète la fonction distance ci-dessous pour quelle retourne la distance euclidienne entre 2 n-uplet A et B.

# le module math est importé au début du notebook
def distance(A, B):
  """
  Fonction qui renvoie la distance euclidienne entre 2 points
  @param list:
  @result elm: le mode de la liste
 
  >>> distance((2,3),(5,7))
  5.0
  """

  
Complète la fonction mode pour qu'elle renvoie la valeur la plus fréquente d'une liste passée en paramète?

def mode(liste):
    """
    Fonction retourne le mode (la valeur la plus fréquente) d'une liste.
    @param list:
    @result elm: le mode de la liste

    >>> mode(["chien","chat","chat","chien","chat","souris"])
    'chat'
    """

A l'aide des fonctions précédemment définies et du pseudo-code des K-NN, écrire un programme Python qui détermine le poste probablement occupé par un joueur en fonction de sa taille et de son poids.

def k_nn(k,entree,donnees):
    """
    Fonction retourne le mode d'une liste.
    
    @param k (int): nombre de voisins utilisés.
    @param entree (n-upplet): caractéristiques de la nouvelle donnée. 
    @param donnees (list): liste de dictionnaire ayant une clé 'label' et une clé 'caracteristiques'.
    
    @result (str): le label affecté à la nouvelle entrée.
          """


Quel est le poste occupé par CJ Sanders en utilisant l’algorithme avec 1 voisin (k =1) ? avec 3 voisins (k =3) ?