Downloads · 30 days
0
roirani80/fifa23-player-value-predictor
fifa23-player-value-predictor is a machine learning model from roirani80. Use it for the machine learning task on the model card, and read the license before you ship it in a product.
<video src="https://huggingface.co/roirani80/fifa23-player-value-predictor/resolve/main/demovideo.mp4.mp4" controls="controls" style="max-width: 720px;"</video
Downloads · 30 days
0
Access
Public
Updated May 8, 2026
Repo size
65.8 MB
Likes
0
Public
Click a slice to open those files.
.mp463.7 MB · 90%
From the Hugging Face model README
<video src="https://huggingface.co/roirani80/fifa23-player-value-predictor/resolve/main/demo_video.mp4.mp4" controls="controls" style="max-width: 720px;"></video>
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.
| 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) |










| 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.


| 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.



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 |

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 |



| 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 |
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.