Prédisez le gagnant de March Madness 2023 avec Python

Mar 20 2023
March Madness, également connu sous le nom de NCAA Men's Division I Basketball Championship, est un tournoi annuel de basketball universitaire aux États-Unis. Ce tournoi à élimination directe comprend 68 équipes de collèges et d'universités du pays, en compétition pour le championnat national de basketball universitaire masculin.

March Madness, également connu sous le nom de NCAA Men's Division I Basketball Championship, est un tournoi annuel de basketball universitaire aux États-Unis. Ce tournoi à élimination directe comprend 68 équipes de collèges et d'universités du pays, en compétition pour le championnat national de basketball universitaire masculin. La National Collegiate Athletic Association ( NCAA ) organise l'événement, et il est devenu un phénomène culturel, captivant les amateurs de sport et les observateurs occasionnels.

Le terme "March Madness" vient du fait que le tournoi se déroule principalement en mars, le match de championnat ayant généralement lieu début avril. Le format du tournoi a évolué au fil des ans, avec le champ actuel de 68 équipes composé de 32 champions de conférence qui se qualifient automatiquement et 36 offres générales accordées par le comité de sélection de la NCAA. Le comité classe également les équipes et les place dans quatre tranches régionales.

March Madness commence avec les «First Four», une série de matchs de qualification déterminant les dernières places dans le groupe principal de 64 équipes. À partir de là, le tournoi progresse à travers plusieurs tours, dont le Round of 64, le Round of 32, le Sweet Sixteen, l'Elite Eight et le Final Four. Enfin, les deux équipes restantes s'affrontent dans le match de championnat pour déterminer le champion national.

L'une des principales attractions de March Madness est l'imprévisibilité et l'excitation des jeux, car les équipes "Cendrillon" les moins bien classées bouleversent souvent les adversaires les mieux classés, conduisant à des finitions spectaculaires et à des moments mémorables. L'imprévisibilité a contribué à la popularité du remplissage des tranches de tournoi et de la participation aux pools de bureau, où les fans tentent de prédire le résultat de chaque match du tournoi.

L'attrait généralisé de March Madness en a fait un événement important dans le sport américain, avec des millions de téléspectateurs qui se connectent pour regarder les matchs à la télévision et en ligne. Le tournoi est également devenu une vitrine pour les talents du basket-ball universitaire, avec de nombreuses futures stars de la NBA qui se sont fait un nom sur la scène nationale lors de cette compétition à enjeux élevés.

Prédire le gagnant de March Madness 2023

Pour prédire le vainqueur du match de championnat masculin de la NCAA, créons un code Python simple en suivant ces étapes :

  1. Collecter des données : collectez les données des équipes participant au tournoi, telles que leurs records de victoires et de défaites, les classements, les statistiques des joueurs et d'autres facteurs pertinents.
  2. Prétraiter les données : nettoyez et prétraitez les données pour les adapter à l'entrée dans un modèle d'apprentissage automatique.
  3. Entraîner un modèle : entraînez un modèle d'apprentissage automatique à l'aide des données historiques des tournois des années précédentes.
  4. Faire une prédiction : utilisez le modèle formé pour prédire le match de championnat de 2023.

Pour éliminer les conjectures, nous voulons utiliser les données disponibles, la tête de série des équipes restantes, pour approximer les pourcentages de victoires en fonction du classement des têtes de série.

Veuillez noter : L'approche est une estimation très approximative et non une représentation précise des pourcentages de victoire réels des équipes.

Voici une fonction Python pour estimer le pourcentage de victoires en fonction de la tête de série de l'équipe en utilisant les données fournies par BetFirm :

import csv

def estimate_win_percentage(seed):
    seed_odds = {
        1: 0.25,
        2: 0.15,
        3: 0.11666666666666667,
        4: 0.08333333333333333,
        5: 0.05,
        6: 0.03333333333333333,
        7: 0.016666666666666666,
        8: 0.008333333333333333,
        9: 0.008333333333333333,
        10: 0.008333333333333333,
        11: 0.008333333333333333,
        12: 0.008333333333333333,
        13: 0.008333333333333333,
        14: 0.008333333333333333,
        15: 0.008333333333333333,
        16: 0.008333333333333333,
    }

    if seed not in seed_odds:
        raise ValueError("Invalid seed value. Must be an integer between 1 and 16.")
    return seed_odds[seed]

remaining_teams = [
    ("Xavier", 3),
    ("Pitt", 11),
    ("Kansas State", 3),
    ("Kentucky", 6),
    ("Marquette", 2),
    ("Michigan State", 7),
    ("UConn", 4),
    ("Saint Mary's", 5),
    ("Baylor", 3),
    ("Creighton", 6),
    ("Florida Atlantic", 9),
    ("FDU", 16),
    ("Indiana", 4),
    ("Miami (Fla.)", 5),
    ("Gonzaga", 3),
    ("TCU", 6),
]

with open('teams_win_percentage.csv', 'w', newline='') as csvfile:
    csv_writer = csv.writer(csvfile)
    csv_writer.writerow(["team", "seed", "win_percentage"])
    
    for team, seed in remaining_teams:
        win_percentage = estimate_win_percentage(seed)
        csv_writer.writerow([team, seed, win_percentage])

print("Data saved to teams_win_percentage.csv")

Les données contiennent la tête de série et le pourcentage de victoires des 16 équipes restantes du tournoi.

team,seed,win_percentage
Xavier,3,0.11666666666666667
Pitt,11,0.008333333333333333
Kansas State,3,0.11666666666666667
Kentucky,6,0.03333333333333333
Marquette,2,0.15
Michigan State,7,0.016666666666666666
UConn,4,0.08333333333333333
Saint Marys,5,0.05
Baylor,3,0.11666666666666667
Creighton,6,0.03333333333333333
Florida Atlantic,9,0.008333333333333333
FDU,16,0.008333333333333333
Indiana,4,0.08333333333333333
Miami Fla.,5,0.05
Gonzaga,3,0.11666666666666667
TCU,6,0.03333333333333333

import csv
import random

def read_teams(file):
    teams = []
    with open(file, 'r') as csvfile:
        reader = csv.DictReader(csvfile)
        for row in reader:
            teams.append(row)
    return teams

def weighted_random_choice(teams):
    weights = [float(team['win_percentage']) for team in teams]
    total_weight = sum(weights)
    normalized_weights = [w / total_weight for w in weights]

    return random.choices(teams, weights=normalized_weights, k=1)[0]

def main():
    teams = read_teams('teams_win_percentage.csv')

    # Use a simple weighted random choice algorithm to predict the winner
    winner = weighted_random_choice(teams)
    print(f"The predicted winner of the 2023 Men's NCAA Championship is: {winner['team']} (Seed: {winner['seed']})")

if __name__ == "__main__":
    main()

Le code Python utilise un algorithme de choix aléatoire pondéré de base pour prédire le gagnant.

Il lit les données d'un fichier CSV nommé " teams_win_percentage.csv " avec les colonnes " team ", " seed " et " win_percentage ".

Notez qu'il ne s'agit que d'un exemple simple et qu'une prédiction plus précise nécessiterait un modèle plus sophistiqué et un ensemble de données plus volumineux.

Asseyons-nous et espérons que Gonzaga ne sera pas éliminé avant le match de championnat.

Plus de contenu sur PlainEnglish.io .

Inscrivez-vous à notre newsletter hebdomadaire gratuite . Suivez-nous sur Twitter , LinkedIn , YouTube et Discord .

Intéressé par la mise à l'échelle de votre startup logicielle ? Découvrez Circuit .