Atelier : paris sportifs et intelligence collective

Conjuguons football et machine learning !

a marqué ce sujet comme résolu.

Voici pour moi. Ce serait bien de ne pas devoir taper son pseudo à chaque ligne, mais juste une fois.

C'est vrai ; d'un autre côté, ça me fait un gagner un tout petit peu de temps de cette façon — et il est possible d'ouvrir le tableau dans un éditeur de texte et de chercher / remplacer 'pseudo' par ton pseudo. Après si tu trouves ça embêtant, tu peux mettre ton pseudo dans la première cellule seulement et je m'en accommoderai.

Après des heures et des heures de programmation (c'est parce que je suis lent, pas parce que c'est compliqué), voici mon code pour "prédire" les résultats de manière totalement AU-TO-MA-TI-SÉ !!!

Si vous êtes intéressé par ma méthode de "prédiction", je vous renvoie à mon précédent post qui sera plus clair sur ce point.

C'est du Vala, pour compiler : valac zdsbets.vala --pkg gee-0.8 --pkg gio-2.0 --pkg gsl.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
using Gee;
using Gsl;

int main (string[] args) {

    // initialisation du RNG
    RNGType* T;
    RNG r;

    RNG.env_setup ();

    T = (RNGType*)RNGTypes.default;
    r = new RNG (T);


    // le pattern est mis en tableau
    string[] array = new string[12];
    for (int i = 0; i < 12; i++) {
        array[i] = stdin.read_line ();
    }


    // chargement du csv avec les résultats
    try {
        Process.spawn_command_line_sync ("rm -rf team_rankings.csv");
        Process.spawn_command_line_sync ("wget https://raw.githubusercontent.com/adndebanane/zdsbets/master/00-datasets/20162017/team_rankings.csv");
    } catch (SpawnError e) {
        stderr.printf ("%s\n", e.message);
    }

    var file = File.new_for_path ("team_rankings.csv");

    if (!file.query_exists ()) {
        error ("File '%s' doesn't exist.\n", file.get_path ());
    }


    // mappage des points de chaque équipe
    var points = new HashMap<string, int> ();

    try {
        var dis = new DataInputStream (file.read ());
        string line;

        dis.read_line (null);
        while ((line = dis.read_line (null)) != null) {
            string[] values = line.split(",");
            points[values[0]] = int.parse (values[8]);
        }

    } catch (GLib.Error e) {
        error ("%s", e.message);
    }


    // boucle principale
    for (int i = 2; i < 12; i++) {

        // Διαίρει καὶ βασίλευε
        string[] data = array[i].split("|");


        // récupération des nom des équipes
        string[] teams = data[1].split ("-");
        teams[0] = teams[0].strip ();
        teams[1] = teams[1].strip ();


        // modification du pseudo
        data[2] = "mrBen  ";


        // calcul des résultats
        int won1 = 0, won2 = 0;

        for (int j = 0; j < 2; j++)
        {
            double u = r.uniform ();
            u *= 1 + ((double) points[teams[0]] / (double) points[teams[1]]);

            if (u < 1)
                won1++;
            else if (u > 1)
                won2++;
        }

        if (won1 > won2)
            data[3] = ("1     ");
        else if (won1 < won2)
            data[3] = ("2     ");
        else
            data[3] = ("N     ");


        // jonction finale
        array[i] = string.joinv("|", data);
    }


    // affichage final
    stdout.printf ("\n--------------------------------------------------------------------------------\n\n");
    for (int i = 0; i < 12; i++) {
        stdout.printf ("%s\n", array[i]);
    }

    return 0;
}

Oui je sais, j'ai aucune fonctions, mais j'en avais pas besoin (pas de répétition de code).

+1 -0

Mes paris

IdMatch Pseudo Prono
Nancy-Nantes adndebanane_elo 1
St Etienne-Bastia adndebanane_elo 1
Lorient-Lille adndebanane_elo 2
Bordeaux-Angers adndebanane_elo 1
Montpellier-Nice adndebanane_elo 2
Marseille-Lyon adndebanane_elo 2
Dijon-Metz adndebanane_elo 1
Toulouse-Guingamp adndebanane_elo 1
Monaco-Rennes adndebanane_elo 1
Caen-Paris SG adndebanane_elo 2
IdMatch Pseudo Prono
Nancy-Nantes adndebanane_hasard 1
St Etienne-Bastia adndebanane_hasard 1
Lorient-Lille adndebanane_hasard 2
Bordeaux-Angers adndebanane_hasard 1
Montpellier-Nice adndebanane_hasard N
Marseille-Lyon adndebanane_hasard 1
Dijon-Metz adndebanane_hasard 1
Toulouse-Guingamp adndebanane_hasard N
Monaco-Rennes adndebanane_hasard N
Caen-Paris SG adndebanane_hasard 1
IdMatch Pseudo Prono
Nancy-Nantes adndebanane 1
St Etienne-Bastia adndebanane 1
Lorient-Lille adndebanane 2
Bordeaux-Angers adndebanane 1
Montpellier-Nice adndebanane 2
Marseille-Lyon adndebanane N
Dijon-Metz adndebanane 1
Toulouse-Guingamp adndebanane 2
Monaco-Rennes adndebanane 1
Caen-Paris SG adndebanane 2

Je laisse encore les pronostics ouverts quelques heures avant de faire tourner l'algorithme de Clem :-)

Allez hop, les super-pronos de Clem pour cette cinquième journée :-)

IdMatch Prono %Poids
Nancy-Nantes 1 53.03202
St Etienne-Bastia 1 67.79661
Lorient-Lille 2 87.08098
Bordeaux-Angers 1 53.03202
Montpellier-Nice 2 70.20716
Marseille-Lyon 2 50.92279
Dijon-Metz 1 53.03202
Toulouse-Guingamp N 50.92279
Monaco-Rennes 1 70.20716
Caen-Paris SG 2 50.92279

Edit: @mrBen, j'ai ajouté mon implémentation du classement Elo sur github. J'ai d'ailleurs testé ta façon de tirer les issues des matchs avec deux lancers de pièce indépendant — j'obtiens environ 30% de bonnes prédictions sur les saisons 13/14, 14/15, 15/16 et les premières journées de 16/17, en basant le biais de la pièce sur les scores Elo (contre environ 50% en prenant toujours la victoire de l'équipe avec le plus grand score).

J'ai par ailleurs mis les jeux de données depuis la saison 2013/2014 sur github (fichiers all_results*.csv, avec la description des colonnes) pour ceux qui voudraient tester l'efficacité de leur méthode.

+1 -0

Clem-ligue1

Résultat de la cinquième journée de championnat

Les résultats de cette cinquième journée sont disponibles sur la page dédiée à l'atelier ! Je prends la tête du classement oklm :p

Les buts sont à retrouver sur cette vidéo.

Pronos de la journée 6

Attention, les matchs ont lieu en semaine (mardi et mercredi), vous n'avez que jusqu'à mardi midi pour parier (c'est demain ;-) ). Bonne chance ! Et n'hésitez pas à nous rejoindre en cours de route, Clem a vraiment besoin de vous (pour repasser devant les pronos aléatoires par exemple).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
|IdMatch           |Pseudo |Prono |
|:-----------------|:------|:-----|
|Lille-Toulouse    |pseudo |      |
|Nice-Monaco       |pseudo |      |
|Lyon-Montpellier  |pseudo |      |
|Paris SG-Dijon    |pseudo |      |
|Bastia-Nancy      |pseudo |      |
|Angers-Caen       |pseudo |      |
|Rennes-Marseille  |pseudo |      |
|Nantes-St Etienne |pseudo |      |
|Guingamp-Lorient  |pseudo |      |
|Metz-Bordeaux     |pseudo |      |
+1 -0

Bon aller je me lance :-)

IdMatch Pseudo Prono
Lille-Toulouse Matchaos 1
Nice-Monaco Matchaos 2
Lyon-Montpellier Matchaos N
Paris SG-Dijon Matchaos 1
Bastia-Nancy Matchaos 1
Angers-Caen Matchaos 2
Rennes-Marseille Matchaos N
Nantes-St Etienne Matchaos 2
Guingamp-Lorient Matchaos 1
Metz-Bordeaux Matchaos 2

Pour moi ce sera :

IdMatch Pseudo Prono
Lille-Toulouse mrBen N
Nice-Monaco mrBen N
Lyon-Montpellier mrBen N
Paris SG-Dijon mrBen 2
Bastia-Nancy mrBen 2
Angers-Caen mrBen 2
Rennes-Marseille mrBen N
Nantes-St Etienne mrBen 1
Guingamp-Lorient mrBen 2
Metz-Bordeaux mrBen 1
+0 -0
IdMatch Pseudo Prono
Lille-Toulouse Emeric 1
Nice-Monaco Emeric N
Lyon-Montpellier Emeric 1
Paris SG-Dijon Emeric 1
Bastia-Nancy Emeric 2
Angers-Caen Emeric 1
Rennes-Marseille Emeric N
Nantes-St Etienne Emeric 2
Guingamp-Lorient Emeric 1
Metz-Bordeaux Emeric 2

Je viens seulement de voir que ce sujet vit de nouveau, c'est cool ! :)

Pour attirer plus de personnes, tu peux éventuellement refaire un nouveau topic pour cette nouvelle saison, en expliquant tout, et demander à l'équipe com' une mise en avant.


De mon côté, en tant que grand supporter de l'AS Nancy Lorraine, je vais essayer de participer le plus régulièrement possible. Du coup, ne vous étonnez pas si je parie toujours sur l'ASNL ; que ce soit en Ligue 2, en Ligue 1 ou même en coupe d'Europe, je ne peux pas parier contre mon équipe de cœur !

Mes pronos :

IdMatch Pseudo Prono
Lille-Toulouse adndebanane_elo 1
Nice-Monaco adndebanane_elo 1
Lyon-Montpellier adndebanane_elo 1
Paris SG-Dijon adndebanane_elo 1
Bastia-Nancy adndebanane_elo 1
Angers-Caen adndebanane_elo 2
Rennes-Marseille adndebanane_elo 1
Nantes-St Etienne adndebanane_elo 2
Guingamp-Lorient adndebanane_elo 1
Metz-Bordeaux adndebanane_elo 2
IdMatch Pseudo Prono
Lille-Toulouse adndebanane_hasard N
Nice-Monaco adndebanane_hasard 2
Lyon-Montpellier adndebanane_hasard N
Paris SG-Dijon adndebanane_hasard 2
Bastia-Nancy adndebanane_hasard 2
Angers-Caen adndebanane_hasard 1
Rennes-Marseille adndebanane_hasard 2
Nantes-St Etienne adndebanane_hasard 2
Guingamp-Lorient adndebanane_hasard 1
Metz-Bordeaux adndebanane_hasard 2
IdMatch Pseudo Prono
Lille-Toulouse adndebanane 2
Nice-Monaco adndebanane 2
Lyon-Montpellier adndebanane 1
Paris SG-Dijon adndebanane 1
Bastia-Nancy adndebanane 1
Angers-Caen adndebanane N
Rennes-Marseille adndebanane N
Nantes-St Etienne adndebanane 2
Guingamp-Lorient adndebanane 1
Metz-Bordeaux adndebanane 2

Sympa ton message Emeric :-) J'ai beaucoup débattu avec moi-même à propos de la nécessité de refaire un sujet dédié à cette saison — pour finalement me dire que j'avais de cette façon moyen de toucher les gens qui suivaient le sujet la première fois. Ça ne change pas grand chose de toute façon, le fil étant fréquemment remonté dans la liste des derniers messages postés, à cause de la fréquence importante de matchs. Par contre, si l'équipe com' veut mettre en avant, qu'elle n'hésite pas en effet :p

On va espérer pour toi que l'ASNL fasse une bonne saison alors — ils ne devraient pas réussir à faire bien pire que Nantes de toute façon (petite larme dans mon cœur). Rappel pour ceux du fond qui ne suivraient pas : cette année, seulement les deux dernières équipes sont reléguées en Ligue 2 (contre 3 auparavant), et la dix-huitième doit passer par un match de barrage (contre le troisième de Ligue 2 je suppose).

+0 -0

Je clôture les paris pour la sixième journée, et voici les super-pronos de Clem :

IdMatch Prono %Poids
Lille-Toulouse 1 38.85057
Nice-Monaco 2 39.32358
Lyon-Montpellier 1 42.63471
Paris SG-Dijon 1 54.99626
Bastia-Nancy 1 42.63471
Angers-Caen 2 38.85057
Rennes-Marseille N 53.23032
Nantes-St Etienne 2 65.81261
Guingamp-Lorient 1 65.81261
Metz-Bordeaux 2 65.81261

La 6ème journée vient de se finir !

Au final, 40% des pronos donnés par Clem sont corrects. De mon côté, j'atteins les 50%. :)


Un grand coup de chapeau à Mr.Ben, qui tout simplement, sur 10 matchs, n'a pronostiqué aucun résultat correct… :-°


J'ai beaucoup débattu avec moi-même à propos de la nécessité de refaire un sujet dédié à cette saison — pour finalement me dire que j'avais de cette façon moyen de toucher les gens qui suivaient le sujet la première fois. Ça ne change pas grand chose de toute façon, le fil étant fréquemment remonté dans la liste des derniers messages postés, à cause de la fréquence importante de matchs. Par contre, si l'équipe com' veut mettre en avant, qu'elle n'hésite pas en effet :p

Pour que l'équipe com' mette ce sujet en avant il faudrait une explication claire, qui permette au visiteur de rapidement savoir de quoi il s'agit. Le sujet actuel date de 2014 et regroupe pas mal de choses, donc en refaire un tout propre pourrait être pas mal. Enfin, c'est comme tu veux !

+2 -0

Clem-ligue1

En effet, voilà les résultats de la sixième journée ! Les résultats complets de notre jeu sont à retrouver sur le site dédié et les buts de la journée sur cette vidéo.

Petit classement des joueurs actuellement, avec une belle entrée d'Emeric :

Joueur Gains (€) Poids Nb de victoires Ratio de Victoires Nb de matchs
Emeric -6.2 0.0855031 5 0.5000000 10
adndebanane 0.1 0.1033087 13 0.4333333 30
adndebanane_elo -19.9 0.1033087 13 0.4333333 30
Matchaos -44.4 0.0654633 3 0.3000000 10
Rockaround -67.2 0.0629627 6 0.3000000 20
adndebanane_hasard -79.0 0.0529880 8 0.2666667 30
Clem -157.9 0.0529880 8 0.2666667 30
mrBen -68.2 0.0405689 6 0.2000000 30

Les paris pour la septième journée (qui commence demain) ! Il est toujours temps de nous rejoindre, le poids des nouveaux arrivants dans la prise de décision des super-pronos de Clem étant pondéré par le nombre de matchs non-joués, vous pouvez vous joindre à nous quand bon vous semble.

IdMatch Pseudo Prono
Nancy-Nice pseudo
St Etienne-Lille pseudo
Lorient-Lyon pseudo
Bordeaux-Caen pseudo
Montpellier-Metz pseudo
Marseille-Nantes pseudo
Bastia-Guingamp pseudo
Dijon-Rennes pseudo
Toulouse-Paris SG pseudo
Monaco-Angers pseudo
+0 -0

Plutôt étrange cette journée… je ne m'attendais pas du tout à une victoire de Nice, qui plus est aussi large. Je pense qu'ils vont être de sérieux concurrents au podium. Le déroulement de Lyon-Montpellier était sympa aussi. Et St Etienne qui prend un rouge et 3 blessés… Espérons que cette prochaine journée sera plus "classique" pour les pronos :p

IdMatch Pseudo Prono
Nancy-Nice Matchaos 2
St Etienne-Lille Matchaos 1
Lorient-Lyon Matchaos 2
Bordeaux-Caen Matchaos N
Montpellier-Metz Matchaos 1
Marseille-Nantes Matchaos 1
Bastia-Guingamp Matchaos 2
Dijon-Rennes Matchaos 2
Toulouse-Paris SG Matchaos 2
Monaco-Angers Matchaos 1

Faut vraiment que je change mon algo :-°

mrBen

Ou alors tu en fais un autre et tu laisses celui-ci tourner pour voir ses performances sur un temps un peu long (même si c'est vrai que ça commence assez mal :-°)

Pour que l'équipe com' mette ce sujet en avant il faudrait une explication claire, qui permette au >visiteur de rapidement savoir de quoi il s'agit. Le sujet actuel date de 2014 et regroupe pas mal de >choses, donc en refaire un tout propre pourrait être pas mal. Enfin, c'est comme tu veux !

Emeric

Qu'entends-tu par "explication claire" ? Tu trouves que le premier message du sujet ne présente pas correctement l'atelier ?

Plutôt étrange cette journée… je ne m'attendais pas du tout à une victoire de Nice, qui plus est aussi large. Je pense qu'ils vont être de sérieux concurrents au podium. Le déroulement de Lyon-Montpellier était sympa aussi. Et St Etienne qui prend un rouge et 3 blessés… Espérons que cette prochaine journée sera plus "classique" pour les pronos :p

Matchaos

Je suis d'accord avec toi et c'est le cas depuis le début du championnat je trouve (Paris qui ne gagne pas à chaque fois, Lyon qui perd, …). Je suppose qu'il faut aussi laisser la saison se lancer pour y voir un peu plus clair.

Petite remarque sur la dynamique du classement Elo (censée mesurée la dynamique de la "force" des équipes) : le classement en début de championnat pouvait se diviser en 4 groupes : Paris d'une part, Lyon, Lille, Nice et Monaco en poursuivants, un gros paquet derrière et Metz pour fermer la marche. Après ces premières journées, Lille dégringole pour rejoindre le "ventre mou", laissant Lyon, Monaco et Nice chasser le PSG. Metz a aussi réussi à rejoindre le gros du panier.


Mes pronos

IdMatch Pseudo Prono
Nancy-Nice adndebanane_elo 2
St Etienne-Lille adndebanane_elo 1
Lorient-Lyon adndebanane_elo 2
Bordeaux-Caen adndebanane_elo 1
Montpellier-Metz adndebanane_elo 1
Marseille-Nantes adndebanane_elo 1
Bastia-Guingamp adndebanane_elo 1
Dijon-Rennes adndebanane_elo 1
Toulouse-Paris SG adndebanane_elo 2
Monaco-Angers adndebanane_elo 1
IdMatch Pseudo Prono
Nancy-Nice adndebanane_hasard N
St Etienne-Lille adndebanane_hasard 2
Lorient-Lyon adndebanane_hasard 1
Bordeaux-Caen adndebanane_hasard 2
Montpellier-Metz adndebanane_hasard 2
Marseille-Nantes adndebanane_hasard 2
Bastia-Guingamp adndebanane_hasard N
Dijon-Rennes adndebanane_hasard 1
Toulouse-Paris SG adndebanane_hasard N
Monaco-Angers adndebanane_hasard 2
IdMatch Pseudo Prono
Nancy-Nice adndebanane 2
St Etienne-Lille adndebanane N
Lorient-Lyon adndebanane 2
Bordeaux-Caen adndebanane 1
Montpellier-Metz adndebanane 1
Marseille-Nantes adndebanane 1
Bastia-Guingamp adndebanane 2
Dijon-Rennes adndebanane 2
Toulouse-Paris SG adndebanane 2
Monaco-Angers adndebanane 1
+0 -0
IdMatch Pseudo Prono
Nancy-Nice Emeric 1
St Etienne-Lille Emeric N
Lorient-Lyon Emeric 2
Bordeaux-Caen Emeric 1
Montpellier-Metz Emeric 1
Marseille-Nantes Emeric 1
Bastia-Guingamp Emeric 1
Dijon-Rennes Emeric 2
Toulouse-Paris SG Emeric 2
Monaco-Angers Emeric 1

Ça va être dur pour Nancy face à une très belle équipe niçoise…


Qu'entends-tu par "explication claire" ? Tu trouves que le premier message du sujet ne présente pas correctement l'atelier ?

Actuellement, si un visiteur débarque sur ce sujet totalement inconnu, il verra un premier message de 2014 et pas forcément à jour, ce qui n'est pas top. Avec un nouveau sujet, tout est réglé ; le nouveau visiteur trouvera rapidement ses réponses. :)

IdMatch Pseudo Prono
Nancy-Nice mrBen 2
St Etienne-Lille mrBen N
Lorient-Lyon mrBen 2
Bordeaux-Caen mrBen 1
Montpellier-Metz mrBen N
Marseille-Nantes mrBen 1
Bastia-Guingamp mrBen 2
Dijon-Rennes mrBen N
Toulouse-Paris SG mrBen 2
Monaco-Angers mrBen N
+0 -0

Toujours avec le même algorithme mrBen ? De ce que je vois ça devrait le faire, même si tu prévois peut-être un peu trop de matchs nuls (j'en compte moins de 22% depuis le début de la saison). Mais c'est pas idiot de prévoir un nul entre Monaco et Angers, les deux équipes pouvant défendre proprement, ça ne me semble pas si simple pour l'une (et en particulier Monaco) de marquer beaucoup de buts.

(j'ai discuté avec ShigeruM qui m'a conseillé de garder ce sujet pour centraliser les informations et qui va mettre l'atelier en avant sur la Une du site (<3) ! Merci pour la suggestion Emeric — je m'engage à bien tenir le premier sujet à jour (mais je crois qu'il l'a toujours à peu près été)).

(j'ai discuté avec ShigeruM qui m'a conseillé de garder ce sujet pour centraliser les informations et qui va mettre l'atelier en avant sur la Une du site (<3) ! Merci pour la suggestion Emeric — je m'engage à bien tenir le premier sujet à jour (mais je crois qu'il l'a toujours à peu près été)).

adndebanane

Tout petit HS : N'hésitez pas à contacter l'équipe Comm (voir ici) pour ce genre de projets. On se fera une joie de relayer l'info ! :)

+2 -0

Toujours le même algo, mais j'ai refactorisé un peu mon code, c'était vraiment moche. C'est dingue, je commence tout juste à réellement comprendre l'intérêt de la POO alors que je sors d'un DUT (et pas dans les derniers).

Si, je trouve le temps de coder un nouvel algo, vous serez prévenu (pas d'inquiétude :p ) !

+1 -0

Les super-pronos de notre Clem ; 3 matchs récoltent 70% des suffrages avec les victoires pronostiquées de Lyon, Marseille et Paris contre Lorient, Nantes et Toulouse. Bastia-Guingamp est le match avec le plus d'incertitude selon nous.

IdMatch Prono %Poids
Nancy-Nice 2 55.13215
St Etienne-Lille N 40.44863
Lorient-Lyon 2 70.20962
Bordeaux-Caen 1 58.66593
Montpellier-Metz 1 63.05577
Marseille-Nantes 1 70.20962
Bastia-Guingamp 2 36.91485
Dijon-Rennes 2 44.83847
Toulouse-Paris SG 2 70.20962
Monaco-Angers 1 63.05577
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte