FiveThirtyEight soccer data

This example illustrates the usage of FiveThirtyEight soccer dataloader.

# Author: Georgios Douzas <gdouzas@icloud.com>
# Licence: MIT

from sportsbet.datasets import FTESoccerDataLoader

Getting the available parameters

We can get the available parameters in order to select the training data to be extracted, using the get_all_params() class method.

Out:

[{'division': [1], 'league': ['Argentina'], 'year': [2018]}, {'division': [1], 'league': ['Argentina'], 'year': [2019]}, {'division': [1], 'league': ['Argentina'], 'year': [2020]}, {'division': [1], 'league': ['Argentina'], 'year': [2022]}, {'division': [1], 'league': ['Australia'], 'year': [2019]}, {'division': [1], 'league': ['Australia'], 'year': [2020]}, {'division': [1], 'league': ['Australia'], 'year': [2021]}, {'division': [1], 'league': ['Australia'], 'year': [2022]}, {'division': [1], 'league': ['Austria'], 'year': [2018]}, {'division': [1], 'league': ['Austria'], 'year': [2019]}, {'division': [1], 'league': ['Austria'], 'year': [2020]}, {'division': [1], 'league': ['Austria'], 'year': [2021]}, {'division': [1], 'league': ['Austria'], 'year': [2022]}, {'division': [1], 'league': ['Belgium'], 'year': [2019]}, {'division': [1], 'league': ['Belgium'], 'year': [2020]}, {'division': [1], 'league': ['Belgium'], 'year': [2021]}, {'division': [1], 'league': ['Belgium'], 'year': [2022]}, {'division': [1], 'league': ['Brazil'], 'year': [2018]}, {'division': [1], 'league': ['Brazil'], 'year': [2019]}, {'division': [1], 'league': ['Brazil'], 'year': [2020]}, {'division': [1], 'league': ['Brazil'], 'year': [2021]}, {'division': [1], 'league': ['Brazil'], 'year': [2022]}, {'division': [1], 'league': ['Champions-League'], 'year': [2017]}, {'division': [1], 'league': ['Champions-League'], 'year': [2018]}, {'division': [1], 'league': ['Champions-League'], 'year': [2019]}, {'division': [1], 'league': ['Champions-League'], 'year': [2020]}, {'division': [1], 'league': ['Champions-League'], 'year': [2021]}, {'division': [1], 'league': ['Champions-League'], 'year': [2022]}, {'division': [1], 'league': ['China'], 'year': [2019]}, {'division': [1], 'league': ['China'], 'year': [2020]}, {'division': [1], 'league': ['Denmark'], 'year': [2019]}, {'division': [1], 'league': ['Denmark'], 'year': [2020]}, {'division': [1], 'league': ['Denmark'], 'year': [2021]}, {'division': [1], 'league': ['Denmark'], 'year': [2022]}, {'division': [1], 'league': ['England'], 'year': [2017]}, {'division': [1], 'league': ['England'], 'year': [2018]}, {'division': [1], 'league': ['England'], 'year': [2019]}, {'division': [1], 'league': ['England'], 'year': [2020]}, {'division': [1], 'league': ['England'], 'year': [2021]}, {'division': [1], 'league': ['England'], 'year': [2022]}, {'division': [1], 'league': ['Europa'], 'year': [2022]}, {'division': [1], 'league': ['Europa-League'], 'year': [2018]}, {'division': [1], 'league': ['Europa-League'], 'year': [2019]}, {'division': [1], 'league': ['Europa-League'], 'year': [2020]}, {'division': [1], 'league': ['Europa-League'], 'year': [2021]}, {'division': [1], 'league': ['Europa-League'], 'year': [2022]}, {'division': [1], 'league': ['FAWSL'], 'year': [2017]}, {'division': [1], 'league': ['FAWSL'], 'year': [2018]}, {'division': [1], 'league': ['FAWSL'], 'year': [2019]}, {'division': [1], 'league': ['FAWSL'], 'year': [2020]}, {'division': [1], 'league': ['FAWSL'], 'year': [2021]}, {'division': [1], 'league': ['FAWSL'], 'year': [2022]}, {'division': [1], 'league': ['France'], 'year': [2017]}, {'division': [1], 'league': ['France'], 'year': [2018]}, {'division': [1], 'league': ['France'], 'year': [2019]}, {'division': [1], 'league': ['France'], 'year': [2020]}, {'division': [1], 'league': ['France'], 'year': [2021]}, {'division': [1], 'league': ['France'], 'year': [2022]}, {'division': [1], 'league': ['Germany'], 'year': [2017]}, {'division': [1], 'league': ['Germany'], 'year': [2018]}, {'division': [1], 'league': ['Germany'], 'year': [2019]}, {'division': [1], 'league': ['Germany'], 'year': [2020]}, {'division': [1], 'league': ['Germany'], 'year': [2021]}, {'division': [1], 'league': ['Germany'], 'year': [2022]}, {'division': [1], 'league': ['Greece'], 'year': [2019]}, {'division': [1], 'league': ['Greece'], 'year': [2020]}, {'division': [1], 'league': ['Greece'], 'year': [2022]}, {'division': [1], 'league': ['Italy'], 'year': [2017]}, {'division': [1], 'league': ['Italy'], 'year': [2018]}, {'division': [1], 'league': ['Italy'], 'year': [2019]}, {'division': [1], 'league': ['Italy'], 'year': [2020]}, {'division': [1], 'league': ['Italy'], 'year': [2021]}, {'division': [1], 'league': ['Italy'], 'year': [2022]}, {'division': [1], 'league': ['Japan'], 'year': [2019]}, {'division': [1], 'league': ['Japan'], 'year': [2020]}, {'division': [1], 'league': ['Japan'], 'year': [2021]}, {'division': [1], 'league': ['Japan'], 'year': [2022]}, {'division': [1], 'league': ['Mexico'], 'year': [2017]}, {'division': [1], 'league': ['Mexico'], 'year': [2018]}, {'division': [1], 'league': ['Mexico'], 'year': [2019]}, {'division': [1], 'league': ['Mexico'], 'year': [2020]}, {'division': [1], 'league': ['Mexico'], 'year': [2021]}, {'division': [1], 'league': ['Mexico'], 'year': [2022]}, {'division': [1], 'league': ['NWSL'], 'year': [2018]}, {'division': [1], 'league': ['NWSL'], 'year': [2019]}, {'division': [1], 'league': ['NWSL'], 'year': [2020]}, {'division': [1], 'league': ['NWSL'], 'year': [2021]}, {'division': [1], 'league': ['NWSL'], 'year': [2022]}, {'division': [1], 'league': ['Netherlands'], 'year': [2018]}, {'division': [1], 'league': ['Netherlands'], 'year': [2019]}, {'division': [1], 'league': ['Netherlands'], 'year': [2020]}, {'division': [1], 'league': ['Netherlands'], 'year': [2021]}, {'division': [1], 'league': ['Netherlands'], 'year': [2022]}, {'division': [1], 'league': ['Norway'], 'year': [2018]}, {'division': [1], 'league': ['Norway'], 'year': [2019]}, {'division': [1], 'league': ['Norway'], 'year': [2020]}, {'division': [1], 'league': ['Norway'], 'year': [2021]}, {'division': [1], 'league': ['Norway'], 'year': [2022]}, {'division': [1], 'league': ['Portugal'], 'year': [2018]}, {'division': [1], 'league': ['Portugal'], 'year': [2019]}, {'division': [1], 'league': ['Portugal'], 'year': [2020]}, {'division': [1], 'league': ['Portugal'], 'year': [2021]}, {'division': [1], 'league': ['Portugal'], 'year': [2022]}, {'division': [1], 'league': ['Russia'], 'year': [2018]}, {'division': [1], 'league': ['Russia'], 'year': [2019]}, {'division': [1], 'league': ['Russia'], 'year': [2020]}, {'division': [1], 'league': ['Russia'], 'year': [2021]}, {'division': [1], 'league': ['Russia'], 'year': [2022]}, {'division': [1], 'league': ['Scotland'], 'year': [2018]}, {'division': [1], 'league': ['Scotland'], 'year': [2019]}, {'division': [1], 'league': ['Scotland'], 'year': [2020]}, {'division': [1], 'league': ['Scotland'], 'year': [2021]}, {'division': [1], 'league': ['Scotland'], 'year': [2022]}, {'division': [1], 'league': ['South-Africa'], 'year': [2019]}, {'division': [1], 'league': ['South-Africa'], 'year': [2020]}, {'division': [1], 'league': ['South-Africa'], 'year': [2022]}, {'division': [1], 'league': ['Spain'], 'year': [2017]}, {'division': [1], 'league': ['Spain'], 'year': [2018]}, {'division': [1], 'league': ['Spain'], 'year': [2019]}, {'division': [1], 'league': ['Spain'], 'year': [2020]}, {'division': [1], 'league': ['Spain'], 'year': [2021]}, {'division': [1], 'league': ['Spain'], 'year': [2022]}, {'division': [1], 'league': ['Sweden'], 'year': [2018]}, {'division': [1], 'league': ['Sweden'], 'year': [2019]}, {'division': [1], 'league': ['Sweden'], 'year': [2020]}, {'division': [1], 'league': ['Sweden'], 'year': [2021]}, {'division': [1], 'league': ['Sweden'], 'year': [2022]}, {'division': [1], 'league': ['Switzerland'], 'year': [2018]}, {'division': [1], 'league': ['Switzerland'], 'year': [2019]}, {'division': [1], 'league': ['Switzerland'], 'year': [2020]}, {'division': [1], 'league': ['Switzerland'], 'year': [2021]}, {'division': [1], 'league': ['Switzerland'], 'year': [2022]}, {'division': [1], 'league': ['Turkey'], 'year': [2018]}, {'division': [1], 'league': ['Turkey'], 'year': [2019]}, {'division': [1], 'league': ['Turkey'], 'year': [2020]}, {'division': [1], 'league': ['Turkey'], 'year': [2021]}, {'division': [1], 'league': ['Turkey'], 'year': [2022]}, {'division': [1], 'league': ['USA'], 'year': [2018]}, {'division': [1], 'league': ['USA'], 'year': [2019]}, {'division': [1], 'league': ['USA'], 'year': [2020]}, {'division': [1], 'league': ['USA'], 'year': [2021]}, {'division': [1], 'league': ['USA'], 'year': [2022]}, {'division': [1], 'league': ['United-Soccer-League'], 'year': [2019]}, {'division': [1], 'league': ['United-Soccer-League'], 'year': [2020]}, {'division': [1], 'league': ['United-Soccer-League'], 'year': [2021]}, {'division': [1], 'league': ['United-Soccer-League'], 'year': [2022]}, {'division': [2], 'league': ['England'], 'year': [2018]}, {'division': [2], 'league': ['England'], 'year': [2019]}, {'division': [2], 'league': ['England'], 'year': [2020]}, {'division': [2], 'league': ['England'], 'year': [2021]}, {'division': [2], 'league': ['England'], 'year': [2022]}, {'division': [2], 'league': ['France'], 'year': [2018]}, {'division': [2], 'league': ['France'], 'year': [2019]}, {'division': [2], 'league': ['France'], 'year': [2020]}, {'division': [2], 'league': ['France'], 'year': [2021]}, {'division': [2], 'league': ['France'], 'year': [2022]}, {'division': [2], 'league': ['Germany'], 'year': [2018]}, {'division': [2], 'league': ['Germany'], 'year': [2019]}, {'division': [2], 'league': ['Germany'], 'year': [2020]}, {'division': [2], 'league': ['Germany'], 'year': [2021]}, {'division': [2], 'league': ['Germany'], 'year': [2022]}, {'division': [2], 'league': ['Italy'], 'year': [2018]}, {'division': [2], 'league': ['Italy'], 'year': [2019]}, {'division': [2], 'league': ['Italy'], 'year': [2020]}, {'division': [2], 'league': ['Italy'], 'year': [2021]}, {'division': [2], 'league': ['Italy'], 'year': [2022]}, {'division': [2], 'league': ['Spain'], 'year': [2018]}, {'division': [2], 'league': ['Spain'], 'year': [2019]}, {'division': [2], 'league': ['Spain'], 'year': [2020]}, {'division': [2], 'league': ['Spain'], 'year': [2021]}, {'division': [2], 'league': ['Spain'], 'year': [2022]}, {'division': [3], 'league': ['England'], 'year': [2019]}, {'division': [3], 'league': ['England'], 'year': [2020]}, {'division': [3], 'league': ['England'], 'year': [2021]}, {'division': [3], 'league': ['England'], 'year': [2022]}, {'division': [4], 'league': ['England'], 'year': [2019]}, {'division': [4], 'league': ['England'], 'year': [2020]}, {'division': [4], 'league': ['England'], 'year': [2021]}, {'division': [4], 'league': ['England'], 'year': [2022]}]

We select to extract training data only for the year 2021 of all the divisions of English league.

param_grid = {'league': ['England'], 'year': [2021]}

Getting the available odds types

We can get the available odds types in order to match the output of the training data, using the get_odds_types() class method.

Out:

[]

Therefore no odds data are available.

Extracting the training data

We extract the training data using the default values for the parameters odds_type` and drop_na_thres`.

The input data:

print(X_train)

Out:

             league        home_team          away_team  home_team_soccer_power_index  away_team_soccer_power_index  home_team_probability_win  ...  away_team_projected_score  home_team_match_importance  away_team_match_importance  division  year  match_quality
date                                                                                                                                            ...
2020-09-11  England          Watford      Middlesbrough                         65.12                         46.31                     0.6387  ...                       0.85                        53.0                        16.5         2  2021      54.127384
2020-09-12  England  Southend United     Harrogate Town                         13.56                          5.70                     0.5760  ...                       0.87                        26.9                        32.9         4  2021       8.026168
2020-09-12  England    Bradford City  Colchester United                         13.49                         16.68                     0.3466  ...                       1.37                        30.7                        41.9         4  2021      14.916354
2020-09-12  England        Port Vale       Crawley Town                         11.37                         12.36                     0.3885  ...                       1.26                        24.0                        26.0         4  2021      11.844349
2020-09-12  England  Oldham Athletic      Leyton Orient                         18.46                         12.80                     0.5072  ...                       1.31                        40.7                        23.6         4  2021      15.117594
...             ...              ...                ...                           ...                           ...                        ...  ...                        ...                         ...                         ...       ...   ...            ...
2021-05-23  England   Leicester City  Tottenham Hotspur                         79.70                         76.85                     0.5437  ...                       1.12                       100.0                         0.0         1  2021      78.249058
2021-05-23  England        Morecambe    Tranmere Rovers                         18.07                         10.76                     0.4706  ...                       1.02                       100.0                       100.0         4  2021      13.488255
2021-05-29  England        Brentford       Swansea City                         66.87                         47.28                     0.7221  ...                       0.79                       100.0                       100.0         2  2021      55.394018
2021-05-30  England        Blackpool       Lincoln City                         35.10                         28.07                     0.6188  ...                       0.94                       100.0                       100.0         3  2021      31.193826
2021-05-31  England        Morecambe     Newport County                         17.71                         12.81                     0.5309  ...                       1.13                       100.0                       100.0         4  2021      14.866651

[2051 rows x 15 columns]

The targets:

print(Y_train)

Out:

      away_win__full_time_goals  draw__full_time_goals  home_win__full_time_goals  over_1.5__full_time_goals  ...  under_1.5__full_time_goals  under_2.5__full_time_goals  under_3.5__full_time_goals  under_4.5__full_time_goals
0                         False                  False                       True                      False  ...                        True                        True                        True                        True
1                          True                  False                      False                       True  ...                       False                       False                       False                        True
2                         False                   True                      False                      False  ...                        True                        True                        True                        True
3                         False                  False                       True                       True  ...                       False                        True                        True                        True
4                          True                  False                      False                      False  ...                        True                        True                        True                        True
...                         ...                    ...                        ...                        ...  ...                         ...                         ...                         ...                         ...
2046                       True                  False                      False                       True  ...                       False                       False                       False                       False
2047                      False                   True                      False                       True  ...                       False                        True                        True                        True
2048                      False                  False                       True                       True  ...                       False                        True                        True                        True
2049                      False                  False                       True                       True  ...                       False                       False                        True                        True
2050                      False                  False                       True                      False  ...                        True                        True                        True                        True

[2051 rows x 11 columns]

Extracting the fixtures data

We extract the fixtures data with columns that match the columns of the training data. On the other hand, the fixtures data are not affected by the param_grid selection.

The input data:

print(X_fix)

Out:

              league          home_team        away_team  home_team_soccer_power_index  away_team_soccer_power_index  home_team_probability_win  ...  away_team_projected_score  home_team_match_importance  away_team_match_importance  division  year  match_quality
date                                                                                                                                             ...
2022-02-02    Greece     Apollon Smyrni    PAOK Salonika                         16.46                         54.61                     0.1059  ...                       2.23                        38.6                        60.8         1  2022      25.295641
2022-02-02  Portugal         Belenenses      Sporting CP                         38.12                         74.08                     0.1216  ...                       1.94                        51.1                        38.1         1  2022      50.337426
2022-02-02   England  Huddersfield Town     Derby County                         38.43                         39.63                     0.3536  ...                       1.07                         8.8                        43.0         2  2022      39.020776
2022-02-02  Scotland             Celtic          Rangers                         64.82                         64.74                     0.4110  ...                       1.27                       100.0                       100.0         1  2022      64.779975
2022-02-02   England           Barnsley     Cardiff City                         33.34                         42.37                     0.3289  ...                       1.33                        33.7                        18.3         2  2022      37.316492
...              ...                ...              ...                           ...                           ...                        ...  ...                        ...                         ...                         ...       ...   ...            ...
2022-05-29     Spain            Leganes          Almeria                         33.85                         40.46                     0.3404  ...                       1.09                         NaN                         NaN         2  2022      36.861015
2022-05-29     Spain           Mirandes      Fuenlabrada                         29.90                         23.66                     0.4772  ...                       0.93                         NaN                         NaN         2  2022      26.416505
2022-05-29     Spain         Amorebieta  SD Ponferradina                         25.46                         30.73                     0.3500  ...                       1.21                         NaN                         NaN         2  2022      27.847866
2022-05-29     Spain        AD Alcorcon            Eibar                         22.53                         36.02                     0.2740  ...                       1.50                         NaN                         NaN         2  2022      27.720943
2022-05-29     Spain               Lugo          Málaga                         31.27                         24.31                     0.4919  ...                       0.95                         NaN                         NaN         2  2022      27.354217

[3288 rows x 15 columns]

Total running time of the script: ( 0 minutes 12.152 seconds)

Gallery generated by Sphinx-Gallery