League of Legends prédicteur Win/Lose
League of Legends est un jeu 5 contre 5 joueurs en ligne. Le but du jeu étant de détruire la base adverse.
les notions importante a connaitre sur ce jeu pour comprendre le projet :
Au début de partie nous choisissons un personnage attribué pour cette partie (autrement appelé champion ou caractère) et on peut choisir de bannir un personnage pour l'interdire à l'équipe ennemie
Nous choisissons également des summoners (des sorts utilisable tous les 2 à 5 minute suivant le sort) ainsi que des runes (qui ne font pas parties de se projet)
Le but du jeu et de détruire le Nexux adverse (dernier bâtiments) pour ce faire il faut dans un premier temps détruire des tous qui le protège. Pour nous aider tout au long de la parties il y a des objectif qui apparaisse qui donne des statistique supplémentaire a tous les personnages de l'équipe qui les récupère il en existe 2 sortes :
Le Dragon récupérable 4 fois et l'Herald qui permet de détruire des bâtiments et après 20 minutes le Nashor donnant des "boost" temporaire mais très puissant
Et pour finir lorsque l'on est proche de détruire le NEXUS adverse on détruit tout d'abord des inhibiteurs qui donne un boost a l'équipe qui les détruit ont peut donc déjà en conclure que l'équipe ayant détruit le premier inhibiteurs a une grande chance de gagner et ca seras sans doute un élément important a prendre en compte.
Imports
Run to view results
Run to view results
On récupère les informations en format string qu'on a actuellement sous forme d'ID dans le CSV:
Run to view results
Voici la répartition des différentes classe de champion sur le jeu
Run to view results
Tout d'abord essayons de voir le taux de victoire pour chaque personnage.
Run to view results
La disparité du taux de victoire entre les diffèrent personnage peut être expliqué par le souhait de riot games (studio créateur du jeu) de rendre fort certain champion durant des périodes pour donner de l'attrait au jeu et une impression de changement.
Maintenant essayons de voir si il y a un type de classe de personnages qui poserais problème (car trop fort ou trop faible)
Run to view results
ont peut donc en conclure qu'il n'y a pas une classe qui fait plus perdre qu'une autre. Mais l'ont peut remarquer que la classe la plus joué est quasiment 3 fois plus joué que la moins joué qui est la classe assassin ici présent.
Regardons maintenant si des types de compositions peuvent être favorable on a décidé de ne prendre que le tags principal pour chaque personnage car certain personnage ayant 2 tags le premier étant celui qui lui correspond le mieux on a préfère garder que le premier pour éviter d'avoir un personnage : "tank/support" par exemple il seras considérer comme un tank
Run to view results
On voit assez rapidement qu'il n'y a pas de composition qui sort vraiment du lot, la seul analyse pertinente peut être qu'on remarque assez bien que plus la composition est varié plus elle a de chance de gagner surtout les teams sans support qui ont du mal et ont des pourcentage de victoire plus faible
Gaussienne du temps de jeu pour l'ensemble des parties
Run to view results
Ont peut remarqué que les parties sont assez équilibré au tour de 30 minutes, mais on a des parties inferieur a 15 minutes, on va supprimer les parties trop courte de notre dataset (parties inferieur à 15 minutes du a une personne qui abandonné la partie) donc pas pertinente
Run to view results
On vérifie que notre dataset est équilibré en regardant le nombre de parties gagné et le nombre de parties perdu (car si 80% des parties sont gagner les résultats n'aurait pas été pertinent)
Run to view results
Maintenant on peut chercher les variables qui ont le plus d'impact sur la partie de jeu
La première chose à faire d'intéressante est d'afficher les statistique de base de chaque colonne
Run to view results
Maintenant à l'aide d'une headmap on regarde la corrélation des colonne par rapport à winner
Run to view results
On utilise un meilleur affichage
Run to view results
TOP 10 meilleurs correlation avec en TOP 1 win qui a une correlation de 1 avec win (plutôt cohérent :) ) , le fait que l'herald, et le baron n'ait pas vraiment une grande importance et du au nombre de parties non négligeable ou aucune des 2 parties les prends.
TOP 10 des pires correlations
Run to view results
Comme ont pouvait le deviner les champions bannis avant que la parties commence ne joue quasiment aucun rôle dans la corrélation avec la victoire, les summoners également car très souvent les mêmes et ne sont pas important.
Liste des elements qui ont le plus de d'importance. On voit qu'il y a des attributs du type t1_towerKills qui sont pas très intéressant car si une team gagne c'est logique d'avoir kill plus de tours que l'équipe ennemie. C'est pour ça que nous allons uniquement nous intéresser aux first objectifs.
Run to view results
Affichons de manière plus graphique les objectifs interessant:
Run to view results
On prend seulement les attributs les plus important dans X et dans Y win or lose
Run to view results
Les X et Y sont one hot encodé
Run to view results
INITIALISATION ensemble de test et train
Run to view results
KNN voisins sur ces données
Run to view results
Arbre
Run to view results
Random Forest (on affiche 3 arbres pour mieux montrer le côté aléatoire)
Run to view results
Réseaux de Neurones
Run to view results
Nos résultats sont corrects mais ils prennent en compte "firstInibitor" qui est pris en fin de partie contrairement à "firstTower" et "firstDragon" qui ont plus tendance à apparaître en début de partie. Donc on va essayer de voir ce que le modèle va donner avec seulement les données de début de parties( ~avant 15 minutes de jeu). Ici on le fait avec KNN
Run to view results
On va essayer de faire des predictions avec cette fois seulement avec les informations d'avant game
Run to view results
Run to view results
Run to view results
Naive Bayes
Run to view results