A complete analytics and machine learning project built using data from the Overwatch Champions Series (FaceIT).
This repository covers NA and EMEA regions across Stages 1–2 and partial Stage 3, providing full end-to-end processing — from data scraping and cleaning to model training and visualization in Power BI.
This project combines data engineering, exploratory analysis, and predictive modeling for competitive Overwatch.
It enables both analytical insights and machine learning training.
- Data scraping from FaceIT's public API
- Cleaning and aggregation of player, team, and match data
- Exploratory data analysis (EDA) and feature engineering
- Match outcome prediction using machine learning
- Power BI dashboard for data visualization
- Open FaceIT Developer Portal and create a new API key (Server-Side).
- Replace the
API_KEYvariable in Scraping data from Faceit API.py with your key. - Go to a match (room) on FaceIT and copy the room ID.
- Paste the ID into the
MATCH_IDSlist inside the script. - Run Cleaning the dataset.py to rename players from FaceIT handles to in-game names.
- Run other scripts as needed — they are structured and documented for sequential use.
Some matches on FaceIT do not have full scoreboard data available.
These missing records may slightly reduce analytical accuracy.
Examples:
- Team Peps vs Vision Esports — Missing map 2
- Team Liquid vs NTMR — Missing map 1 (Stage 1)
- Team Liquid vs Spacestation — Missing map 1 (Stage 2)
- Team Liquid vs DhillDucks — Entire scoreboard missing (Stage 2)
- Twisted Minds vs Team Peps — Missing map 3 (Stage 2)
- Alqadsiah vs Frost Tails — Missing map 3 (Stage 2)
This project provides two types of predictive systems:
one based on advanced ML (Python scripts) and another on statistical rolling averages (Jupyter).
Implements both Logistic Regression and Random Forest models (with calibration).
Also includes a custom Elo rating system for dynamic performance weighting.
Twisted Minds vs Al qadsiah Twisted Minds win probability: 0.76 Al qadsiah win probability: 0.24
Per Map Type Predictions: Hybrid: Twisted Minds 0.80 | Al qadsiah 0.20 -> Favored: Twisted Minds Control: Twisted Minds 0.72 | Al qadsiah 0.28 -> Favored: Twisted Minds This script provides console-based predictions and map-by-map win probabilities for any matchup.
Uses RandomForestClassifier to predict match outcomes:
- Win (1)
- Loss (0)
- Draw (2)
- Damage Dealt
- Healing Done
- Final Blows
- KD Ratio
- Encoded team, player, and role identifiers
- Training set: Matches before July 2025 (Stages 1 & 2)
- Test set: Matches after July 2025 (Stage 3)
Exports a file containing predicted outcomes for all head-to-head matchups.
| File | Description |
|---|---|
| Prediction Notebook.jupyter: | |
predictions_all.csv |
Predicted outcomes for every possible team matchup |
| Other .py files: | |
latest_team_stats.csv |
Rolling team performance averages for Power BI dashboard |
faceit_all_matches_emea_na_all_stages.csv |
Cleaned master dataset including all matches |
team_match.csv / team_map.csv |
Aggregated team-level statistics by match and map |
- Python: pandas, numpy, scikit-learn, matplotlib
- Power BI: Interactive dashboards (Players, Teams, Maps, Bans, Predictions)
- Data Source: FaceIT Overwatch Champions Series API
- Author: Majed Almusayhil
- Data Source: FaceIT (Overwatch Champions Series)
- License: MIT
- Year: 2025