MauroAndretta
AIFootballPredictions
Jupyter Notebook

AIFootballPredictions is an ML-based system to predict if a football match will have over 2.5 goals. Using historical data from top European leagues (Serie A, EPL, Bundesliga, La Liga, Ligue 1), it employs advanced feature engineering and model training techniques to provide accurate predictions. Perfect for sports analytics enthusiasts.

Last updated Jun 13, 2026
56
Stars
19
Forks
0
Issues
0
Stars/day
Attention Score
32
Language breakdown
No language data available.
โ–ธ Files click to expand
README

AIFootballPredictions

๐ŸŽฏ AI Football Predictions: Will There Be Over 2.5 Goals? ๐ŸŽฏ

Check out the latest predictions for the upcoming football matches! We've analyzed the data and here are our thoughts: PREDICTIONS DONE: 2025-02-28

Premier League:

Serie A:

  • โšฝ Fiorentina ๐Ÿ†š Lecce: Under 2.5 Goals (59.89% chance)
  • โšฝ Atalanta ๐Ÿ†š Venezia: Over 2.5 Goals! ๐Ÿ”ฅ (85.17% chance)
  • โšฝ Napoli ๐Ÿ†š Inter: Over 2.5 Goals! ๐Ÿ”ฅ (94.92% chance)
  • โšฝ Udinese ๐Ÿ†š Parma: Over 2.5 Goals! ๐Ÿ”ฅ (75.26% chance)
  • โšฝ Monza ๐Ÿ†š Torino: Over 2.5 Goals! ๐Ÿ”ฅ (77.75% chance)
  • โšฝ Bologna ๐Ÿ†š Cagliari: Under 2.5 Goals (76.23% chance)
  • โšฝ Genoa ๐Ÿ†š Empoli: Under 2.5 Goals (78.29% chance)
  • โšฝ Roma ๐Ÿ†š Como: Over 2.5 Goals! ๐Ÿ”ฅ (50.44% chance)
  • โšฝ Milan ๐Ÿ†š Lazio: Under 2.5 Goals (54.49% chance)
  • โšฝ Juventus ๐Ÿ†š Verona: Under 2.5 Goals (88.96% chance)
Bundesliga:
  • โšฝ Stuttgart ๐Ÿ†š Bayern Munich: Over 2.5 Goals! ๐Ÿ”ฅ (90.58% chance)
  • โšฝ St Pauli ๐Ÿ†š Dortmund: Under 2.5 Goals (78.8% chance)
  • โšฝ Bochum ๐Ÿ†š Hoffenheim: Over 2.5 Goals! ๐Ÿ”ฅ (76.12% chance)
  • โšฝ Werder Bremen ๐Ÿ†š Wolfsburg: Under 2.5 Goals (81.46% chance)
  • โšฝ RB Leipzig ๐Ÿ†š Mainz: Over 2.5 Goals! ๐Ÿ”ฅ (87.95% chance)
  • โšฝ Heidenheim ๐Ÿ†š M'gladbach: Over 2.5 Goals! ๐Ÿ”ฅ (68.89% chance)
  • โšฝ Ein Frankfurt ๐Ÿ†š Leverkusen: Under 2.5 Goals (61.12% chance)
  • โšฝ Union Berlin ๐Ÿ†š Holstein Kiel: Over 2.5 Goals! ๐Ÿ”ฅ (91.03% chance)
  • โšฝ Augsburg ๐Ÿ†š Freiburg: Over 2.5 Goals! ๐Ÿ”ฅ (57.77% chance)
La Liga:
  • โšฝ Valladolid ๐Ÿ†š Las Palmas: Under 2.5 Goals (94.32% chance)
  • โšฝ Girona ๐Ÿ†š Celta: Over 2.5 Goals! ๐Ÿ”ฅ (73.47% chance)
  • โšฝ Vallecano ๐Ÿ†š Sevilla: Over 2.5 Goals! ๐Ÿ”ฅ (88.3% chance)
  • โšฝ Betis ๐Ÿ†š Real Madrid: Over 2.5 Goals! ๐Ÿ”ฅ (94.72% chance)
  • โšฝ Ath Madrid ๐Ÿ†š Ath Bilbao: Over 2.5 Goals! ๐Ÿ”ฅ (94.72% chance)
  • โšฝ Leganes ๐Ÿ†š Getafe: Over 2.5 Goals! ๐Ÿ”ฅ (65.62% chance)
  • โšฝ Barcelona ๐Ÿ†š Sociedad: Over 2.5 Goals! ๐Ÿ”ฅ (72.24% chance)
  • โšฝ Mallorca ๐Ÿ†š Alaves: Under 2.5 Goals (99.17% chance)
  • โšฝ Osasuna ๐Ÿ†š Valencia: Over 2.5 Goals! ๐Ÿ”ฅ (63.72% chance)
  • โšฝ Villarreal ๐Ÿ†š Espanol: Over 2.5 Goals! ๐Ÿ”ฅ (89.97% chance)
Ligue 1:
  • โšฝ Monaco ๐Ÿ†š Reims: Over 2.5 Goals! ๐Ÿ”ฅ (73.58% chance)
  • โšฝ St Etienne ๐Ÿ†š Nice: Under 2.5 Goals (93.4% chance)
  • โšฝ Lens ๐Ÿ†š Le Havre: Over 2.5 Goals! ๐Ÿ”ฅ (65.85% chance)
  • โšฝ Paris SG ๐Ÿ†š Lille: Over 2.5 Goals! ๐Ÿ”ฅ (66.92% chance)
  • โšฝ Lyon ๐Ÿ†š Brest: Over 2.5 Goals! ๐Ÿ”ฅ (92.07% chance)
  • โšฝ Montpellier ๐Ÿ†š Rennes: Over 2.5 Goals! ๐Ÿ”ฅ (76.95% chance)
  • โšฝ Auxerre ๐Ÿ†š Strasbourg: Under 2.5 Goals (70.88% chance)
  • โšฝ Angers ๐Ÿ†š Toulouse: Over 2.5 Goals! ๐Ÿ”ฅ (78.66% chance)
  • โšฝ Marseille ๐Ÿ†š Nantes: Under 2.5 Goals (56.8% chance)

Table of Contents

- Set up the APIKEY

Project Overview

AIFootballPredictions aims to create a predictive model to forecast whether a football match will exceed 2.5 goals. The project is divided into four main stages:

  • Data Acquisition: Download and merge historical football match data from multiple European leagues.
  • Data Preprocessing: Process the raw data to engineer features, handle missing values, and select the most relevant features.
  • Model Training: Train several machine learning models, perform hyperparameter tuning, and combine the best models into a voting classifier to make predictions.
  • Making Predictions: Use the trained models to predict outcomes for upcoming matches and generate a formatted message for sharing.

Directory Structure

The project is organized into the following directories:

โ””โ”€โ”€โ”€ AIFootballPredictions
    โ”œโ”€โ”€โ”€ conda: all the conda environemnts
    โ”œโ”€โ”€โ”€ data: the folder for the data
    โ”‚       โ”œโ”€โ”€โ”€ processed
    โ”‚       โ””โ”€โ”€โ”€ raw
    โ”œโ”€โ”€โ”€ models: the folder with the saved and trained models
    โ”œโ”€โ”€โ”€ notebooks: all the notebooks if any
    โ””โ”€โ”€โ”€ scripts: all the python scripts
            โ”œโ”€โ”€โ”€ data_acquisition.py
            โ”œโ”€โ”€โ”€ data_preprocessing.py
            โ”œโ”€โ”€โ”€ train_models.py
            โ”œโ”€โ”€โ”€ acquirenextmatches.py
            โ””โ”€โ”€โ”€ make_predictions.py

Key Scripts

  • data_acquisition.py: Downloads and merges football match data from specified leagues and seasons.
  • data_preprocessing.py: Preprocesses the raw data, performs feature engineering, and selects the most relevant features.
  • train_models.py: Trains machine learning models, performs hyperparameter tuning, and saves the best models.
  • acquirenextmatches.py: Acquires the next football matches data, updates team names using a mapping file, and saves the results to a JSON file.
  • make_predictions.py: Uses the trained models to predict outcomes for upcoming matches and formats the results into a readable txt message.
Note: it is suggested to avoid path error, to execute all the scripts in the root folder.

Setup and Installation

To set up the environment for this project, follow these steps:

  • Clone the repository:
git clone https://github.com/yourusername/AIFootballPredictions.git
   cd AIFootballPredictions
  • Create a conda environment
conda env create -f conda/aifootball_predictions.yaml
   conda activate aifootball_predictions

Data Acquisition

To download and merge football match data, run the data_acquisition.py script:

python scripts/dataacquisition.py --leagues E0 I1 SP1 F1 D1 --seasons 2425 2324 2223 --rawdataoutputdir data/raw
This script downloads match data from football-data.co.uk for the specified leagues and seasons, merges them, and saves the results to the specified output directory.

To avoid error please see the Supported Leagues sections.

Data Preprocessing

Once the raw data is downloaded, preprocess it by running the data_preprocessing.py script:

python scripts/datapreprocessing.py --rawdatainputdir data/raw --processeddataoutputdir data/processed --numfeatures 20 --clustering_threshold 0.5
This script processes each CSV file in the input folder, performs feature engineering, selects relevant features while addressing feature correlation, handles missing values, and saves the processed data.

Model Training

To train machine learning models and create a voting classifier, use the train_models.py script:

python scripts/trainmodels.py --processeddatainputdir data/processed --trainedmodelsoutputdir models --metricchoice accuracy --n_splits 10 --voting soft
This script processes each CSV file individually, trains several machine learning models, performs hyperparameter tuning, combines the best models into a voting classifier, and saves the trained voting classifier for each league.

Upcoming Matches Acquisition

To acquire the next football matches data and update the team names, run the acquirenextmatches.py script:

python scripts/acquirenextmatches.py --getteamsnamesdir data/processed --nextmatchesoutputfile data/next_matches.json
This script will:
  • Fetch the next matches data from the football-data.org API.
  • Read the unique team names from the processed data files.
  • Update the team names in the next matches data using the mapping file.
- This step is necessary because the teams' names acquired with the football-data.org API differ from the teams' names acquired from football-data.co.uk, which've been used to train the ML models.
  • Save the updated next matches to a JSON file.

Setu up the API_KEY

In order to properly execute the acquirenextmatches.py script it is first necessary to set up the API_KEY to gather the next matches information. Below the procedure on how to properly set up the variable:

  • Register for an API Key:
- Go to the Football-Data.org website and register to get your personal API key.
  • Create a ~/.env File:
- This file will be used by the loaddotenv library to set up the APIFOOTBALL_DATA environment variable. - To create the file: - Open your terminal and run the command: vim ~/.env - This will create a new ~/.env file if it doesn't already exist.
  • Insert the API Key:
- After running the vim command, press the i key (for "insert mode"). - Write down the following line, replacing yourpersonalkey with your actual API key: - APIFOOTBALLDATA=yourpersonalkey
  • Save and Exit:
- Press the Esc key to exit insert mode. - Then, type :wq! and press Enter to save the changes and exit the editor.
  • Verify the Variable:
- To check if the variable has been properly set, run the following command from the terminal: - cat ~/.env - You should see the APIFOOTBALLDATA variable listed with your API key.

Making Predictions

To predict the outcomes for upcoming matches and generate a formatted message for sharing, run the make_predictions.py script:

python scripts/makepredictions.py --modelsdir models --datadir data/processed --outputfile finalpredictions.txt --jsoncompetitions data/next_matches.json
This script will:
  • Load the pre-trained models and the processed data.
  • Make predictions for upcoming matches based on the next matches data.
  • Format the predictions into a redable .txt message and save it to the specified output file.

Supported Leagues

For the moment, the team name mapping has been done manually. The predictions currently support the following leagues:

  • Premier League: E0
  • Serie A: I1
  • Ligue 1: F1
  • La Liga (Primera Division): SP1
  • Bundesliga: D1
For this reason be carful when executing the data acquisition step.

Contributing

If you want to contribute to this project, please fork the repository and submit a pull request. For major changes, please open an issue first to discuss what you would like to change.

License

This project is licensed under the BSD-3-Claude license - see the LICENSE file for details.

Disclaimer

This project is intended for educational and informational purposes only. While the AIFootballPredictions system aims to provide accurate predictions for football matches, it is important to understand that predictions are inherently uncertain and should not be used as the sole basis for any decision-making, including betting or financial investments.

The predictions generated by this system can be used as an additional tool during the decision-making process. However, they should be considered alongside other factors and sources of information.

The authors of this project do not guarantee the accuracy, reliability, or completeness of any information provided. Use the predictions at your own risk, and always consider the unpredictability of sports events.

By using this software, you agree that the authors and contributors are not responsible or liable for any losses or damages of any kind incurred as a result of using the software or relying on the predictions made by the system.

๐Ÿ”— More in this category

ยฉ 2026 GitRepoTrend ยท MauroAndretta/AIFootballPredictions ยท Updated daily from GitHub