TV Series Score Estimator (pre-release)
Three scikit-learn models that estimate the audience score of an English-language, US-origin scripted TV series from information known before it premieres. They were built for a university classical-ML course project.
| Folder | Predicts |
|---|---|
general/ |
combined score (IMDb + TMDB, vote-weighted) |
imdb/ |
IMDb rating |
tmdb/ |
TMDB rating |
Results on the hold-out set (series from 2023-2025, never used for training or tuning)
| Model | Algorithm | n | Baseline MAE | Model MAE | R2 | Within 0.5 |
|---|---|---|---|---|---|---|
| general (combined_score) | RandomForest | 840 | 0.623 | 0.609 | 0.037 | 53% |
| imdb (imdb_rating) | RandomForest | 840 | 0.660 | 0.641 | 0.041 | 51% |
| tmdb (tmdb_rating) | RandomForest | 569 | 0.593 | 0.557 | 0.091 | 54% |
The baseline always predicts the training-set average. The gain over the baseline is small: pre-release information explains only a few percent of the variation in audience ratings. Treat predictions as rough estimates, not forecasts.
Usage
import json, joblib, pandas as pd
from huggingface_hub import hf_hub_download
repo = "mohossameldeen/SeriesScope"
model = joblib.load(hf_hub_download(repo, "general/model.joblib"))
features = json.load(open(hf_hub_download(repo, "general/config.json")))["features"]
X = pd.DataFrame([my_series_features]).reindex(columns=features) # missing values are allowed (NaN)
print(model.predict(X))
Requires scikit-learn==1.6.1 (the version used for training) and joblib.
Training data and limitations
- Series that premiered 2015-2025, English original language, US in country of origin, scripted/miniseries, 1,000+ IMDb votes.
- Data: IMDb non-commercial datasets and the TMDB API. This product uses the TMDB API but is not endorsed or certified by TMDB.
- Inputs: genres, network, runtime, episode count, age rating, adaptation/remake flags, and the career history of the top cast and creatives.
- Not reliable outside the training scope (other languages or countries, reality shows, very obscure titles).
- Files are scikit-learn pickles (joblib): only load them from a source you trust.