Euro Cup 2016 Predictor
Simply, this predictor is based on typical "feature+classifier" machine learning framework.
- feature: ELO rating, win/draw/lose rate, goal/lost-goal since 1920
- label: goal difference between team1 and team2
- classifier: Random Forest Classifier
The code is a little in chaos due to limited time. Maybe I'll update it.
Run
environment: Python2.7 with scikit-learn package installed;
- run
group_stage.py
to get group stage results (./result/nation_point.csv and ./result/promoted_nation.csv); - run
knockout_stage.py
to get final results (./result/knockout_result.csv).
Prediction Results
Champion
Knockout Stage
round | team1 | team2 | result |
---|---|---|---|
16 | france | ukraine | 3 |
16 | spain | italy | 1 |
16 | england | romania | 1 |
16 | portugal | ireland | 3 |
16 | germany | romania | 2 |
16 | belgium | czechia | 1 |
16 | switzerland | poland | 2 |
16 | slovakia | austria | 1 |
8 | france | spain | 1 |
8 | england | portugal | 3 |
8 | germany | belgium | 1 |
8 | switzerland | slovakia | 1 |
4 | france | england | 1 |
4 | germany | switzerland | 2 |
2 | france | germany | -1 |
Group Stage
Standings
group | team | points | goal difference |
---|---|---|---|
a | switzerland | 7 | 3 |
a | france | 5 | 1 |
a | romania | 4 | 1 |
a | albania | 0 | -5 |
b | england | 5 | 3 |
b | slovakia | 5 | 2 |
b | wales | 2 | -2 |
b | russia | 2 | -3 |
c | germany | 7 | 4 |
c | ukraine | 4 | -1 |
c | poland | 4 | -1 |
c | northern ireland | 1 | -2 |
d | spain | 9 | 3 |
d | czechia | 4 | 1 |
d | turkey | 2 | -1 |
d | croatia | 1 | -3 |
e | belgium | 7 | 2 |
e | ireland | 5 | 1 |
e | italy | 4 | 0 |
e | sweden | 0 | -3 |
f | portugal | 9 | 6 |
f | austria | 6 | 3 |
f | hungary | 3 | -4 |
f | iceland | 0 | -5 |
Matches Details
((team1,team2),result)
(('france', 'romania'), 0)
(('france', 'albania'), 1)
(('france', 'switzerland'), 0)
(('romania', 'albania'), 2)
(('romania', 'switzerland'), -1)
(('albania', 'switzerland'), -2)
(('england', 'russia'), 3)
(('england', 'wales'), 0)
(('england', 'slovakia'), 0)
(('russia', 'wales'), 0)
(('russia', 'slovakia'), 0)
(('wales', 'slovakia'), -2)
(('germany', 'ukraine'), 2)
(('germany', 'poland'), 2)
(('germany', 'northern ireland'), 0)
(('ukraine', 'poland'), 0)
(('ukraine', 'northern ireland'), 1)
(('poland', 'northern ireland'), 1)
(('spain', 'czechia'), 1)
(('spain', 'turkey'), 1)
(('spain', 'croatia'), 1)
(('czechia', 'turkey'), 0)
(('czechia', 'croatia'), 2)
(('turkey', 'croatia'), 0)
(('belgium', 'italy'), 1)
(('belgium', 'ireland'), 0)
(('belgium', 'sweden'), 1)
(('italy', 'ireland'), 0)
(('italy', 'sweden'), 1)
(('ireland', 'sweden'), 1)
(('portugal', 'iceland'), 2)
(('portugal', 'austria'), 1)
(('portugal', 'hungary'), 3)
(('iceland', 'austria'), -2)
(('iceland', 'hungary'), -1)
(('austria', 'hungary'), 2)
Thanks
historcal data from fedebayle
euro2016 data from nowaycomputer
promotion rules of euro2016 from Sohu