Nous allons travailler sur les données contenues dans le fichier JoueursTop14.csv.
Analyser le fichier JoueurTop14.csv avec notepad++ par exemple.
Ecrire une fonction liste_joueurs de paramètre un fichier csv et qui renvoie une liste de dictionnaires contenant les données 'Poste', 'Taille (en cm)' et 'Poids (en kg)' du fichier.
Ecrire une fonction postes qui a pour paramètre la liste des joueurs et qui renvoie un dictionnaire dont les clés sont les postes et les valeurs 0, plus tard cela correspondra au nombre de postes.
Ecrire une fonction liste_joueurs_par_rapportqui a les paramètres taille, poids, liste des joueurs qui renvoie une liste de dictionnaires ayant deux clés le poste et la distance par rapport aux 'taille' et 'poids' saisis.
Ecrire une fonction KNN qui a les paramètres k le nombre de voisins, taille, poids, liste des joueurs qui renvoie le dictionnaire des postes mis à jour.
Ecrire une fonction prediction qui a les paramètres taille, poids, k le nombre de voisins, liste des joueurs, qui renvoie une prédiction sur le 'Poste' le plus adapté...
Voici le nuage de points de cette série réalisée avec le module matplotlib
Il faut être dans un repère orthonormé pour utiliser la distance euclidienne

Voici le code :
import matplotlib.pyplot as plt
def representation(data=joueurs):
for i in range(len(data)):
lacouleur="tab:"
if(data[i]['Poste']=="Talonneur"):
lacouleur+="blue"
lemarker="x"
label="Avant"
elif(data[i]['Poste']=="Pilier"):
lacouleur+="red"
lemarker="+"
label="Mêlée"
elif(data[i]['Poste']=="2ème ligne"):
lacouleur+="red"
lemarker="+"
label="2ème ligne"
elif(data[i]['Poste']=="3ème ligne"):
lacouleur+="green"
lemarker="1"
label="3ème ligne"
elif(data[i]['Poste']=="Mêlée"):
lacouleur+="purple"
lemarker="."
label="Mêlée"
elif(data[i]['Poste']=="Ouverture"):
lacouleur+="purple"
lemarker="."
label="Ouverture"
elif(data[i]['Poste']=="Centre"):
lacouleur+="brown"
lemarker="*"
label="Centre"
elif(data[i]['Poste']=="Ailier"):
lacouleur+="blue"
lemarker="*"
label="Ailier"
else :
lacouleur+="orange"
lemarker="^"
label="Arrière"
plt.plot(int(data[i]['Poids']), int(data[i]['Taille']), color=lacouleur,marker=lemarker,label=label)
plt.xlabel("Poids (en kg)")
plt.ylabel("Taille (en cm)")
plt.axis('equal') #pour avoir un repère orthonormé
plt.show()
representation()