Each project is a complete pipeline: data, training, evaluation, and prediction. Click any project with a live demo to try it.
Fine-tunes DistilBERT for binary sentiment classification using LoRA, where only 0.3% of parameters are updated, producing a ~1 MB adapter. Three-way comparison: zero-shot baseline vs LoRA vs full fine-tune.
Predicts bike availability at Barcelona Bicing stations 15 minutes ahead. Time-series regression with temporal train/test split, lag features, rolling means, and a persistence baseline.
From-scratch reimplementation of ResNet-20 from He et al. 2016: BasicBlock, residual connections, batch norm, and He initialisation all written by hand. Trained on CIFAR-10.
Fine-tunes SmolLM2-360M with LoRA to act as a machine learning tutor. Trained on 40 curated Q&A pairs with chat templates. Uses HuggingFace Trainer with gradient accumulation and cosine LR scheduling.
Unsupervised anomaly detection on 284K credit card transactions (0.17% fraud). Models train only on normal data and learn to flag deviations. Compares Isolation Forest, LOF, and One-Class SVM.
A tabular Q-Learning agent that learns to balance a pole on a cart from scratch. Discretises the continuous state space into bins and builds an action-value table over 10,000 episodes.
Predicts a student's final grade from study habits, sleep, attendance, and previous grades. Compares Linear Regression, Ridge, Lasso, Decision Tree, Random Forest, and SVR.
K-Nearest Neighbours implemented from zero: Euclidean distance, majority voting, no scikit-learn. Classifies tree species from physical measurements.
A command-line habit tracker with streak tracking, struggle detection, and historical completion checks. SQLite3 storage, modular architecture, and a full pytest suite.