Zoidberg 2.0
Epitech ML project: comparing classification models on chest X-rays.
A 3-person academic Machine Learning project: compare several approaches (logistic regression, MLP, CNN, hierarchical classifier) on the Chest X-Ray Pneumonia dataset, with a web app to train, evaluate, and predict.
Context
Team
Role
What was built
Architecture
Media gallery
ArchitectureArchitecture
Technical decisions
Choosing metrics that fit the data imbalance
About 74% of the training X-rays are pneumonia cases. A high accuracy score can therefore hide a model that handles the minority class poorly. Evaluation also relies on recall, macro-F1, ROC-AUC, and Average Precision.
Weighing missed pneumonia cases more heavily
In this academic setting, missing an X-ray that shows pneumonia is treated as more costly than a false alarm. Model selection therefore gives particular weight to recall on those cases.
From-scratch, pedagogical implementations
The project cleanly separates the ML engine, the API, and the dashboard, with from-scratch implementations rather than leaning fully on high-level libraries.
Stack
Skill → evidence
Compares several model families with a fit-for-purpose evaluation protocol
Logistic regression, MLP, CNN, and a hierarchical classifier, stratified cross-validation, metrics centered on recall rather than accuracy alone.
Cleans and prepares an imbalanced dataset
Data loading, cleaning, augmentation and balancing; presets including the virus/bacteria distinction.
Exposes an ML engine through an API and a real-time dashboard
FastAPI + React dashboard: start/pause training, SSE-based loss/accuracy tracking, checkpoint evaluation, image prediction.
