Joueurs de rugby

On se propose de déterminer le poste qu'un joueur de rugby peut occuper à partir de sa morphologie (poids et taille). Par exemple, à quel poste pourrait évoluer un joueur de \(1.80 m\) pour \(80 kg\) ?

Simplification

Pour simplifier le problème, on se limitera à trois postes : pilier, 2ème ligne et arrière.

Pour ce faire, nous allons utiliser un jeu de données issues du site AllRugby concernant des joueurs de rugby professionnels qui ont joué dans le championnat français.

Méthode

Nous allons utiliser dans cet exercice la méthode des k plus proches voisins.

Cet algorithme consiste à :

  • calculer la distance entre le joueur inconnu et chacun des joueurs du jeu de données,
  • classer les joueurs selon les distances croissantes,
  • comptabiliser le nombre d'apparitions de chaque poste parmi les k premiers joueurs,
  • déterminer le poste le plus fréquent.
Représentation des données

Chaque joueur est décrit par les attributs suivants :

Attributs Type Python
Nom str
Prénom str
Poste str
Age int
Taille int
Poids int
Nationalité str

Ces données ont été importées dans une liste Python nommée joueurs. Chacun des éléments de cette liste est un dictionnaire contenant les informations décrivant un joueur. On affiche ci-dessous le premier élément de la liste joueurs :

>>> joueurs[0]  # l'ensemble des informations du 1er joueur
{'Nom': ABADIE, 'Prénom' : 'Paul', 'Poste' : 'Mêlée', 'Age' : 25, 'Taille' : 176, 'Poids' : 88, 'Nationalité' : 'France'}

Les joueurs peuvent occuper les postes suivants : "Pilier", "Talonneur", "2ème ligne", "3ème ligne", "Mêlée", "Ouverture", "Centre", "Ailier" ou "Arrière".

Question 1 : Extraction

Nous allons extraire du jeu de données global les jeux de données nécessaires pour l'exercice, contenant les informations de taille, poids et poste :

  • un jeu de données d'entraînement, composé des \(3/4\) des données totales et qui servira directement à l'algorithme,
  • un jeu de données de test, composé du \(1/4\) restant et qui servira à tester l'efficacité de l'algorithme.
Exemple pour trois joueurs
>>> donnees_postes
[(178, 83, 'Arrière'), (172, 112, 'Pilier'), (195, 116, '2ème ligne')]

Compléter les instructions suivantes (on rappelle que les données sont chargées en mémoire dans la variable joueurs):

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013s3o_8èbcdufvg/T0lyq n7AaêpS.r1meR,(P2=4:Njtwki9][5h*)é6050j0G0R0y0U0r0b0u0i0r0y0b0b0M010R0U0A010406050b0k0F0F0y0D0s040B0d0r0k0{0d0v050o12141618100A041h1o051r0o1r1t1o100j0U0m0:0=0@0_0Z0U0n0Z0r1H0Z0R0~050+0h0r0G1C0?0^011G1I1K1I0R1Q1S1O0R0h0d0j181P0D1p0R0Z0:1b0b0A0y0v0_0L011U1E010l0-0G0v0y0F0G1O1_1{201W231S26280~0a0u0K0D0d0A0d0b0U1e0v0u0)1@0D0D0G0i2t1h2b0v1p0o1=2G0R1:1/1;0j2d0_1K0v252q1O1z1B0;1V2Q0U2S0v1,1A1O0A2z1p2E2G2.111`2u2Y212%0D150r0~0u0E2D2=0 2;2c2@1W2_2{2}0L301{322E2P01370y2|040u0c3b2F103e350_3h3j0u0N3n3d2=3f3t2}0Y3x3p3z3r3g0d2`3i2}0%3E332?1D363J383k0w3O3q3R3s3T3L3k0f3X3G3Z3I3K3u0V3)343+3B040E0q3:3Q2Z3,3U0E2 1i313F3;3|3?0E3a413c433{2^3#3j0E3m493o3P3A4e0~0E3w4i3y444d3-4n3D4q1q2,1h2W2J0j2N3f0i1,291p4B1s4z2:4x4G0)2-3*3|0i0E0~030u0H0G0t0k0z0R1T0E0u0O2l0d0U0j0/0)0/0A0-0U0G0D0b3`3A0~2p4/0b0e4@1K4`4|4q0u4k3H0d0~0M3x593Y3|0}040X3x5a3=0~0Q0d0k0G0k0D5m5h215j5l4x5x1W0b1~04010K4.4:015w4S5y0~0W5f5n3|0T0~0l3J5R5C3s5p5r5t5v585S210d0S0~2#5Y5N365#5s5u572.0u5g5;0_5U040U0l5:4s5=045q5@5(2:5Z015z5M640_5E0~5H2q4(5L5B5}6c5P634c1W5c040M5e5)6b6h5G0K4^4`6m6a6o5j5Q4q064b4F4V044X4Z4#4%1T0L4+5{1%0G0y0k2v1T0R0k0A1S0/4G0v4(266.2v1{6,0*0u3J0j2z6W0+0-1S0I0u504:0u6^2p0b4(4}3H4U4W6$0u0R5r0/6+0u675%0/0$0+6;000L0g280u1!2S00710u000x2y0U0g2z006_6#006C550D000C7a5o040j1f2S0G52774(5_315|6f016u6x5`5*1W5z0J6e6s5!665$5u7:3f6d6n7%6A010p0,0r1(7_3H6I0I6r4~7?68843+7{6G7}5F6j516F317,0_86883H0v5?5%8c5i0~5A8f7;017~5I78298u5O040W0#8p3+5 5W697#8m3g8s7^6y6o5,5.1g8U7%8r8a7m5f7$8z5 618K458S8O3c8Q8e8l6z8h8C6l8F7-6q8Z8z8W608Y7+6b5j7/7|8z8B6D0D8k8;950~878 3f7~7s7u7w8E987`9g8|6g8h7C0D7E2z9d2F8=0~8J9i858~2.6L8Q7c6P4Y4!4$4(3l6W0P0d0F0h6|2w7l5^0u7o1{0R7A9l1T9n7y7A9v9x0G7H5r7A7L4_7N7Q8.040v9V0G0e9Y4{8-5+5da3360h0~2g9s6p04978y897T0v7V7X6k7Wab5j9D9H6M7b6O6Q9N6T3v6W0Q5t2v00252K0,2S286;4G0F770$6$0/0c0o0N722z0F9^0/252z0n0U78aTaD4;1Tah2Sak8D7!4a8Q8#a152aD0DaF0GaH0R8(8Q7)a68n8wab8#a*0G7W53ala.9A9f5kb35.an9G8P6b8M5X9E7R0Ub07(5-92bp9}0~a^0v0n0Gbgadbe9|9~a07@a29p5b0~0!abaU0~4hafbJ040o0obM0U0~4pbQ8d9C6Jaq9Jat9M6S9P0YayaA2w7Z9%aJaL2v6#0EaQaBaX0GaZa#a`a%0u2z789$a(2v7Ub77Yam6Ka:8/52b;bpa bm8vbdbI7Rb5cab9bA8x8@6o8#bocnclb$bi6obk8:2F8)89cx948Vbr5/ck2^a804bwbybAaecu8!0~9}2zbF68ba4R7%6ubLcy21bN04bPcV900~bTbVbXbA9hcJcWbDcZa=bA0#cAa/0o4P0G2G2+d64A1A4C2J2L2H1+1-2J0y1Rd90o4B10dm0*810b04.

Dans la fenêtre ci-dessous, a été générée une représentation des différents joueurs sous la forme d'un nuage de points : chaque point représente un joueur, la taille en abscisse et le poids en ordonnées. (Un point de couleur plus intense indique la présence de plusieurs points superposés.)

Votre figure

Votre tracé sera ici

Question 2 : Distance

Distance euclidienne

Pour calculer la distance entre deux joueurs, on utilisera la fonction calcul_distance, déjà chargée en mémoire, qui calcule la distance euclidienne entre deux points.

Compléter la fonction estimation_distance :

  • qui prend en paramètres donnees un jeu de données et inconnu un couple d'entiers représentant les caractéristiques du joueur inconnu,
  • qui renvoie une liste de couples contenant, pour chaque joueur du jeu de données, sa distance avec le joueur inconnu ainsi que son poste, triée par ordre croissant des distances.

Exemple

>>> donnees_postes = [ (178, 83, 'Arrière'),
                       (172, 112, 'Pilier'),
                       (195, 116, '2ème ligne')]
>>> estimation_distance(donnees_postes, (180,80))
[(3.605551275463989, 'Arrière'), (32.984845004941285, 'Pilier'), (39.0, '2ème ligne')]
Indice

On utilise ici le principe du tri par insertion.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013s3o_8;bcdufvg/0ly n7apSr1-me,(P2=4:Njtwki9][5h)6050j0C0M0v0P0q0b0s0i0q0v0b0b0H010M0P0w010406050b0k0B0B0v0y0r040x0d0q0k0;0d0t050o0{0}0 110_0w041a1h051k0o1k1m1h0_0j0P0m0)0+0-0/0U0P0n0U0q1A0U0M0@050!0h0q0C1v0,0.011z1B1D1B0M1J1L1H0M0h0d0j111I0y1i0M0U0)140b0w0v0t0/0G011N1x010l0$0C0t0v0B0C1H1/1;1_1P1|1L1 210@0a0s0F0y0d0w0d0b0P170t0s0Y1-0y0y0C0i2m1a240t1i0o1+2z0M1)1(1*0j260/1D0t1~2j1H1s1u0*1O2J0P2L0t1#1t1H0w2s1i2x2z2%0`1:2n2R1`2W0y0~0q0@0s0z2w2+0^2*252-1P2/2;2?0G2_1;2{2x2I01300v2=040s0c342y0_372~0/3a3c0s0I3g362+383m2?0T3q3i3s3k390d2:3b2?0W3x2|2,1w2 3C313d0u3H3j3K3l3M3E3d0f3Q3z3S3B3D3n0Q3Y2}3!3u040z0p3)3J2S3#3N0z2^1b2`3y3*3=3,0z333`351j2#1a2P2C0j2G380i1#221i471l452)422y054c0Y2$3Z3=0O0@0Y0l3q3I380N2?4w3R3~0l0@0C0b0;0~2m0e1s4H1;0i4G4B4q1`0?040E4R3}2.4t182L4Q4k4p4Y1P4U0D3q0s4x3A0t0@2U4c0t0t0k4X3;4T0@0V0J3x0s534/4C4Z040t0h2s0e0L0d0k0C0k0y0b4.4:3!0d0@0H5k562 0h0@294|384U4W4(5l3~4!4_0C4%2)5r0/4U0V52545B574G4I0v2v4(554S1P5n045p5U5O4+0@0S5w3A0O0i0@0K180C5q5W0/4s040l3C5=4*3l4?5|4}5X4z042U603t5t040y1;0n5;5A5I015y5*3+0@595b5d5f5h5j6e5?6g4 0R5M535$5@0@5`0y664;5 5#6f0d63656G6s590@6a0t6c6i3=6h6r5}396k5a0C5c5e5g5i6S4~04506w546x6f4=046n6%6D5m5o6^5C040j4#5F6q5H6s4U5)6V615~646)5%046v4(066.6.6y6X6}0P4N0t4P6{1`5Y5!2%5V6W6;0i3b0i0k0q4L7l0!7n6d726W6U7H777j4@4#4{765x0@4-6L7I0@5z7K3t0@6?5h7a5J5(7%010B0P0@3/7Q3A4U0R7T7t7i6;7#6C7:3!747*7,0@3_7Y7;0@0R0V5L7e7g5N6:4F4H0P4J0P187*7 7}6|0P8k867p5X6`7U7L7J2`7_4t7D4O7G8x6f4,8r787{8p0475843!8104418M6T86892%7f8b7u7L7`8G017r8#6;8o8a8X7i5^0N1z1L8(7!8#5Y020n0M0g8#8O7/7^6H631;0j8=045Q8g5S8i198m6*8L8D6M8?9c7b0R9e436f8~8J7d906s8^0q8{95978h8j9i7(8K7*8!9A8$0@0A807-3-9p9l4l9n9K8 9f7V7c518+8X8c9g968f9y9b8R9d9D9h9(9j7@9S8Z8e5R5T9,9B9N4)9:6=7*5Y9I9F8O839/7R7c8@8t9r7v9;989?a3859C9F9E9@9G049 aia19p9.9m9Z9x999zai8laiahad7~8q9W9X8Y7Z9|8u388%aH6EaGa87L9~8}9Ka2358W6/6s5^2s0M5h9%2`aEaLasacaT1a4n0C2z2!a.461t482C2E2A1!1$2C0v1Ka;0o470_b10Z0#0%04.
Question 3 : Détermination du poste

Ecrire la fonction comptabilise_classe qui prend en paramètres un tableau de couples (poste, distance) trié selon les distances et un entier k indiquant le nombre de voisins, et qui renvoie un dictionnaire qui associe à chaque poste le nombre d'apparitions parmi les k premiers éléments du tableau.

Ces k premiers éléments constitueront ainsi nos k plus proches voisins.

>>> voisins = [ (3.7, 'Arrière'),
                (5.6, '2ème ligne'),
                (6.2, '2ème ligne'),
                (8.4, 'Arrière'),
                (12.2, '2ème ligne')]
>>> comptabilise_classe(voisins, 3)
{'Arrière':1, '2ème ligne':2}

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013s3o_8bcdufvg/ly n7apSr1me,(P2=4:}+twki9][5h{)6050i0z0J0t0M0o0b0q0h0o0t0b0b0E010J0M0u010406050b0j0y0y0t0w0p040v0d0o0j0/0d0r050n0_0{0}0 0@0u04181f051i0n1i1k1f0@0i0M0l0%0)0+0-0R0M0m0R0o1y0R0J0=050Y0g0o0z1t0*0,011x1z1B1z0J1H1J1F0J0g0d0i0 1G0w1g0J0R0%120b0u0t0r0-0D011L1v010k0!0z0r0t0y0z1F1-1/1@1N1`1J1}1 0=0a0q0C0w0d0u0d0b0M150r0q0W1+0w0w0z0h2k18220r1g0n1)2x0J1%1$1(0i240-1B0r1|2h1F1q1s0(1M2H0M2J0r1Z1r1F0u2q1g2v2x2#0^1.2l2P1^2U0w0|0o0=0x2u2)0?2(232+1N2-2/0=0D2?1/2^2v2G012}0t2:040c312w0@342{0-37390F3c332)353i0=0Q3l3e3n3g360d2.380=0U3s2_2*1u2|3x2~040s3C3f3F3h3H3z040f3L3u3N3w3y390N3l1h2Z182N2A0i2E350h1Z201g3(1j3$2%192@053-0W2!3U2Q010L0=0W0k3!3M3 0K0=0q453~2,0k0=3-0y0u1H0!0M0b0z0e2{0z4b2`3V0;040B4r3E3 0r0=0l0d4l2S0b4x354u0A3l4a462,0=0L4H3v4u0T0G3s0q4X4M4c2|4f3F0z4G3^324Z4s3 0d0=0E4L3D4I0=0S0H4W4Y4?3v41040k3x4=4N4#040M534!0-0d4856174*2w4,4y2,0g0=0w1/0m4q5f3}4-1^4u4w5q4}3V4A044Q5w540-4T4V5q064Y5J5h3o0=2g0b0J5p2#5L3v4/044;5q5T5y4B4D2i0r4)2%5D014u0P4R5!565/3 4u0O5.5C59010y0M2;5=5t0=0O4{5K5Z3 4 0M445Y5x4z5N2h5Q585s1N5b0=2S6h5i554p5)3_5+4u5G2#5I655K6c4O046q601N5-6E3h6e5P5R6s5{5@6n355V0I5X5S6A1N5}5 5H6y661^4 0z0#6L326V5E0=6v2@6x6!4X6,364$1M4(6H5,0=5_5*5{5z5O6g5`6i6-04636b5+5V6T2@6#6W5~042=6Z4|5+4 2q0J0j0w5e6U5+5z6D5H183{0z2x2Y7A3%1r3)2A2C2y1Y1!2A0t1I7D0n3(0@7Q0X0Z0#04.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013s3o_8bcdufvg/ly n7apSr1me,(P2=4:}+twki9][5h{)6050i0z0J0t0M0o0b0q0h0o0t0b0b0E010J0M0u010406050b0j0y0y0t0w0p040v0d0o0j0/0d0r050n0_0{0}0 0@0u04181f051i0n1i1k1f0@0i0M0l0%0)0+0-0R0M0m0R0o1y0R0J0=050Y0g0o0z1t0*0,011x1z1B1z0J1H1J1F0J0g0d0i0 1G0w1g0J0R0%120b0u0t0r0-0D011L1v010k0!0z0r0t0y0z1F1-1/1@1N1`1J1}1 0=0a0q0C0w0d0u0d0b0M150r0q0W1+0w0w0z0h2k18220r1g0n1)2x0J1%1$1(0i240-1B0r1|2h1F1q1s0(1M2H0M2J0r1Z1r1F0u2q1g2v2x2#0^1.2l2P1^2U0w0|0o0=0x2u2)0?2(232+1N2-2/0=0D2?1/2^2v2G012}0t2:040c312w0@342{0-37390F3c332)353i0=0Q3l3e3n3g360d2.380=0U3s2_2*1u2|3x2~040s3C3f3F3h3H3z040f3L3u3N3w3y390N3l1h2Z182N2A0i2E350h1Z201g3(1j3$2%192@053-0W2!3U2Q010L0=0W0k3!3M3 0K0=0q453~2,0k0=3-0y0u1H0!0M0b0z0e2{0z4b2`3V0;040B4r3E3 0r0=0l0d4l2S0b4x354u0A3l4a462,0=0L4H3v4u0T0G3s0q4X4M4c2|4f3F0z4G3^324Z4s3 0d0=0E4L3D4I0=0S0H4W4Y4?3v41040k3x4=4N4#040M534!0-0d4856174*2w4,4y2,0g0=0w1/0m4q5f3}4-1^4u4w5q4}3V4A044Q5w540-4T4V5q064Y5J5h3o0=2g0b0J5p2#5L3v4/044;5q5T5y4B4D2i0r4)2%5D014u0P4R5!565/3 4u0O5.5C59010y0M2;5=5t0=0O4{5K5Z3 4 0M445Y5x4z5N2h5Q585s1N5b0=2S6h5i554p5)3_5+4u5G2#5I655K6c4O046q601N5-6E3h6e5P5R6s5{5@6n355V0I5X5S6A1N5}5 5H6y661^4 0z0#6L326V5E0=6v2@6x6!4X6,364$1M4(6H5,0=5_5*5{5z5O6g5`6i6-04636b5+5V6T2@6#6W5~042=6Z4|5+4 2q0J0j0w5e6U5+5z6D5H183{0z2x2Y7A3%1r3)2A2C2y1Y1!2A0t1I7D0n3(0@7Q0X0Z0#04.

Ecrire la fonction classe_dominante qui prend en paramètre un dictionnaire qui associe chaque poste avec son nombre d'apparitions et renvoie la chaine de caractères correspondant au poste le plus fréquent. (en cas d'égalité, on prendra la classe qui arrive première dans l'ordre alphabétique)

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013s3o_8;bcdufvg/0ly n7apS.r1me,(P2=4:twki95hx)6050j0C0K0v0N0q0b0s0i0q0v0b0b0H010K0N0w010406050b0k0B0B0v0z0r040x0d0q0k0.0d0t050o0^0`0|0~0?0w04171e051h0o1h1j1e0?0j0N0m0$0(0*0,0Q0N0n0Q0q1x0Q0K0;050X0h0q0C1s0)0+011w1y1A1y0K1G1I1E0K0h0d0j0~1F0z1f0K0Q0$110b0w0v0t0,0G011K1u010l0Z0C0t0v0B0C1E1,1.1?1M1_1I1|1~0;0a0s0F0z0d0w0d0b0N140t0s0V1*0z0z0C0i2j17210t1f0o1(2w0K1$1#1%0j230,1A0t1{2g1E1p1r0%1L2G0N2I0t1Y1q1E0w2p1f2u2w2!0@1-2k2O1@2T0z0{0q0;0s0A2t2(0=2%222*1M2,2.2:0G2?1.2^2u2F012}0v2/040s0c312v0?342{0,37390s0I3d332(353j2:0P3n3f3p3h360d2-382:0T3u2_2)1t2|3z2~3a0u3E3g3H3i3J3B3a0f3N3w3P3y3A3k0O3V2`3X3r040A0p3$3G2P3Y3K0A2=182@3v3%3/3)0A303@321g2Y172M2z0j2D350i1Y1 1f441i422$3 2v05490V2Z3W3/0M0;0V0l3n3F350L2:4t3O3{0l0;2{0C0e0j0d0B2R1.0K0C4y4n1@0:040E4N3`2+4C3H0C0b4T3.4P0;0S0J3u0s4+0s4u3x0t0;0{0R0N3n4-4z1@0d0;0H4^4.3X4I0;3,4h0=4,4_4O2|4W1L4E4=4 4`1M4|044~55584U1M0b1;0401014*4,504o0;0l3z5f593i5b0*4M555w4$040D5B5n5D042T0B0h2p5M4#5h4w042R5U3q5E0b4Y4!355i0y5)4/0;2i0C0B4Z5H5g0,4Q0E4(5u574+5I1M4p5Y4s5l605O5Q5S5G2!5m5V0,5i020n0K0g5!5.044=4@5@5C014Q4)55065~6w6c5#6m0v4?6k3X5i5k6b66360;685T6u6x5~6I4:044D0e5e655^016F6D3{5$6a3^6O6I620C1A646H6X6R6L6%326y3x6F6G2@6^3(4;6B6o6/6q0d5X1.0j6!4V6S4X785h0;020q6i7c5O6T6V2$6X6s5}6O6}6#6A6C6W734}7i6J5P4H697p6)6:6$6U6B7y6Z7v5N7z4D3u6v5v6X622p0K0k0z167L6d7N4X7H0R3E0o4k0C2w2X7,431q452z2B2x1X1Z2z0v1H7/0o440?7 0W0Y0!04.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013s3o_8;bcdufvg/0ly n7apS.r1me,(P2=4:twki95hx)6050j0C0K0v0N0q0b0s0i0q0v0b0b0H010K0N0w010406050b0k0B0B0v0z0r040x0d0q0k0.0d0t050o0^0`0|0~0?0w04171e051h0o1h1j1e0?0j0N0m0$0(0*0,0Q0N0n0Q0q1x0Q0K0;050X0h0q0C1s0)0+011w1y1A1y0K1G1I1E0K0h0d0j0~1F0z1f0K0Q0$110b0w0v0t0,0G011K1u010l0Z0C0t0v0B0C1E1,1.1?1M1_1I1|1~0;0a0s0F0z0d0w0d0b0N140t0s0V1*0z0z0C0i2j17210t1f0o1(2w0K1$1#1%0j230,1A0t1{2g1E1p1r0%1L2G0N2I0t1Y1q1E0w2p1f2u2w2!0@1-2k2O1@2T0z0{0q0;0s0A2t2(0=2%222*1M2,2.2:0G2?1.2^2u2F012}0v2/040s0c312v0?342{0,37390s0I3d332(353j2:0P3n3f3p3h360d2-382:0T3u2_2)1t2|3z2~3a0u3E3g3H3i3J3B3a0f3N3w3P3y3A3k0O3V2`3X3r040A0p3$3G2P3Y3K0A2=182@3v3%3/3)0A303@321g2Y172M2z0j2D350i1Y1 1f441i422$3 2v05490V2Z3W3/0M0;0V0l3n3F350L2:4t3O3{0l0;2{0C0e0j0d0B2R1.0K0C4y4n1@0:040E4N3`2+4C3H0C0b4T3.4P0;0S0J3u0s4+0s4u3x0t0;0{0R0N3n4-4z1@0d0;0H4^4.3X4I0;3,4h0=4,4_4O2|4W1L4E4=4 4`1M4|044~55584U1M0b1;0401014*4,504o0;0l3z5f593i5b0*4M555w4$040D5B5n5D042T0B0h2p5M4#5h4w042R5U3q5E0b4Y4!355i0y5)4/0;2i0C0B4Z5H5g0,4Q0E4(5u574+5I1M4p5Y4s5l605O5Q5S5G2!5m5V0,5i020n0K0g5!5.044=4@5@5C014Q4)55065~6w6c5#6m0v4?6k3X5i5k6b66360;685T6u6x5~6I4:044D0e5e655^016F6D3{5$6a3^6O6I620C1A646H6X6R6L6%326y3x6F6G2@6^3(4;6B6o6/6q0d5X1.0j6!4V6S4X785h0;020q6i7c5O6T6V2$6X6s5}6O6}6#6A6C6W734}7i6J5P4H697p6)6:6$6U6B7y6Z7v5N7z4D3u6v5v6X622p0K0k0z167L6d7N4X7H0R3E0o4k0C2w2X7,431q452z2B2x1X1Z2z0v1H7/0o440?7 0W0Y0!04.
Question 4 : Mesure de la fiabilité

Ecrire la fonction knn qui prend en paramètres le jeu de données, un entier k représentant le nombre de voisins à prendre à compte et un couple d'entiers inconnu correspondant à la taille et au poids du joueur inconnu, et qui renvoie le poste du joueur sous forme d'une chaîne de caractères.

Evaluation de la fiabilité

La fonction sera testée, avec plusieurs valeurs de k allant de \(1\) à \(15\), sur le jeu de test joueurs_entrainement défini au début de l'exercice et déjà chargé en mémoire.

On va ensuite comparer le poste prédit par l'algorithme avec le poste réel du joueur. Le programme affichera alors le taux de réussite de l'algorithme.

Pour quelle valeur de k la fonction fournit-elle le résultat le plus fiable ?

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013s3o_bcdufvg/ly napSr1me,(P2=4:twkih)050h0x0F0r0I0n0b0p0g0n0r0b0b0C010F0I0s010406050b0i0w0w0r0u0o040t0d0n0i0#0d0q050m0,0.0:0=0*0s040~1505180m181a150*0h0I0k0T0V0X0Z0J0I0l0J0n1o0J0F0(050O0f0n0x1j0W0Y011n1p1r1p0F1x1z1v0F0f0d0h0=1w0u160F0J0T0^0b0s0r0q0Z0B011B1l010j0Q0x0q0r0w0x1v1Z1#1*1D1-1z1:1=0(0a0p0A0u0d0s0d0b0I0{0q0p0M1X0u0u0x0g2a0~1^0q160m1V2n0F1T1S1U0h1`0Z1r0q1/271v1g1i0U1C2x0I2z0q1P1h1v0s2g162l2n2R0+1!2b2F1+2K0u0/0n0(0v2k2V0)2U1_2X1D2Z2#0(0B2)1#2+2l2w012:0r2$040c2@2m0*2`2.0Z2}2 0D322n2O0x2n2D2q0h2u2{0g1P1?163g192P2,2m3b053l0M2Q2V2{0H0(0M0j3u351k1D0G0(0p3F3z362|0j0(0H0q0}0 2*3s2{0%040z3M2-3H373C0|2z0x0b3$2W3(013Z0y3b3L3G2G2|3R3/3Y0(3@3V2^3_3N3;0q0(2I3l3T0i3~3O3Z0K0E3b060p4k443%3{47043-0#0/2a3.422m4m3:3{0d0(0C3^3X3O4p4r0I4t0I0|0e1g0b0O0q0g3-4d3;3Z3#4w3y4n2Y3*3T0x4T4Y4F4V404E3`4#04493+4c4*4/1D4f4i4l4y2{4p2.4)2R4~3O4B044D4Y54460(3l0w0s1x0Q0I0b0x0e514U3{4W5n4:4I4K0|4v2T4_0Z3?4.454o3}4^5B1+4{4Y4j4l4+3{3B042g0F0i0u3U535L4:514N0d0w2I1#0F0x5q4`0(4X5w5F2/5c3H523W5x3=0(0K4i0~3w3e173r0m3p2o3i0~2r2q1O1Q2q0r1y5~611h2+610N0P0R04.