YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
Project Walkthrough Video
FIFA 23 Player Market Value Predictor
Roy Irani | Assignment 2 | Data Science Course β April 2026
Project Overview
Can we predict a football player's market value based on their in-game attributes?
This project builds a full machine learning pipeline on the FIFA 23 Complete Player Dataset (Kaggle), predicting value_eur β a player's real-world market value in Euros. The pipeline covers data cleaning, exploratory analysis, feature engineering, clustering, regression modeling, and classification.
Dataset
| Property | Detail |
|---|---|
| Source | FIFA 23 Complete Player Dataset β Kaggle |
| Players | ~17,000 male players (FIFA 23) |
| Features | 110 attributes |
| Target | value_eur β player market value in Euros |
| Feature types | Numeric (skill ratings, age, overall, potential) + Categorical (nationality, club, league, position, preferred foot) |
EDA β Exploratory Data Analysis
Market Value Distribution
Correlation Heatmap
Key Findings
- Market value is heavily right-skewed β the vast majority of players are worth under β¬5M, while a small elite command β¬100M+
- Overall rating is the strongest predictor of value, but the relationship is non-linear β elite ratings (85+) carry exponentially higher value
- Players peak between ages 25β29 β value rises sharply in early 20s and declines after 30
- Top 5 leagues command a value premium β Premier League and La Liga players are consistently valued higher than players with the same rating in lower leagues
- Attackers and central midfielders hold the highest median market values by position
Overall Rating vs Market Value
Age vs Market Value
Preferred Foot Analysis
Young Players β Potential vs Market Value
BONUS: Domain Analysis
Position vs Market Value
League Premium
Feature Engineering
| Feature | Description |
|---|---|
physical_index |
Combined sprint speed + strength + jumping |
mental_index |
Combined composure + vision + aggression |
growth_potential |
Potential minus overall β room to improve |
is_peak_age |
Binary flag for players aged 25β29 |
overall_squared |
Captures the exponential value curve at elite ratings |
Clustering: Applied KMeans (k=4) to group players into archetypes, visualized with PCA 2D projection. Clusters mapped naturally to: elite superstars, first-team regulars, squad players, and young prospects.
Regression Results
Baseline Model Performance
| Model | MAE | RMSE | RΒ² |
|---|---|---|---|
| Linear Regression (Baseline) | β¬2,533,555 | β¬5,177,925 | 0.5418 |
| Linear Regression (Engineered) | β¬2,226,587 | β¬4,162,906 | 0.7039 |
| Random Forest Regressor | β¬8,608 | β¬114,114 | 0.9998 |
| Gradient Boosting Regressor | β¬178,640 | β¬399,824 | 0.9973 |
Winner: Random Forest Regressor β RΒ² of 0.9998, average error of only β¬8,608 per player.
Feature Importance β Random Forest
Feature Importance β Gradient Boosting
Classification Results
Players classified into 3 market value tiers using quantile binning:
| Tier | Definition |
|---|---|
| Class 0 β Low | Bottom 33% by value |
| Class 1 β Mid | Middle 33% by value |
| Class 2 β High | Top 33% by value |
Class Distribution
Winner: Gradient Boosting Classifier β 98% Overall Accuracy
| Class | Precision | Recall | F1 |
|---|---|---|---|
| Low (0) | 0.99 | 0.99 | 0.99 |
| Mid (1) | 0.98 | 0.98 | 0.98 |
| High (2) | 0.99 | 0.99 | 0.99 |
Confusion Matrices
Repository Contents
| File | Description |
|---|---|
Assignment_2_Roy_Irani.ipynb |
Full notebook with all code, outputs, and visualizations |
regression_model.pkl |
Winning regression model (Random Forest) + scaler + feature list |
classification_model.pkl |
Winning classification model (Gradient Boosting) + scaler + feature list |
Key Takeaways & Reflections
Feature engineering had a significant impact β RΒ² jumped from 0.54 to 0.70 before any complex modeling. Tree-based models massively outperformed Linear Regression, confirming that player market value is an inherently non-linear problem. The league premium finding was the most compelling domain insight: players with identical overall ratings are valued differently based on which league they play in. Classification at 98% accuracy proved that once strong regression features are in place, tier classification becomes straightforward.
A note on tooling: During this project I used Claude Code (Anthropic's AI coding assistant) as a technical aid β helping with code structure, debugging, and implementation details. All analytical decisions, modeling choices, domain insights, and conclusions were my own.


















