← all projectsA machine learning CLI project I made to estimate the probability of the home team winning a Premier League match. It was a project for me to get hands-on experience with feature engineering and training a model to predict the outcome of a football match.
What it does
- Data — 230,000+ historical matches dating back to 2000.
- Features — each match is described by an Elo rating difference (team strength), recent form over the last 5 matches (momentum), shots on target over the last 5 (attacking efficiency), and home advantage.
- Models — I compared Logistic Regression, Random Forest, and XGBoost, and they all gave roughly the same accuracy. In the final implementation I used Logistic Regression, since it did marginally better than the others.
- Predict — an interactive CLI walks you through picking teams, with fuzzy string matching so “mancity” still finds Man City.

What I learned
Through this project, I learned more about feature engineering, as well as how to train and evaluate a machine learning model.
For future improvement, I will try to find a way to automate the data-collection part. However, the only sources I can find are the links I provided, and they either don’t have an API or their API isn’t working.