Note
Click here to download the full example code
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)