Overview
This project classifies which exercise someone is doing from the motion sensors in a smartwatch. It was my applied machine learning (APS360) course project, and it connects to a wider interest of mine in wearables and health technology.
The problem
Wearables record a constant stream of accelerometer and gyroscope readings. Turning that stream into something meaningful, such as "this person is doing squats", needs a model that copes with noisy, continuous signals.
Context and motivation
Fitness tracking is one of the most familiar uses of wearable data, and it is a good test of whether a small model can learn from raw sensor streams.
My role
To write: which parts you built (data processing, model, report) and which were shared.
Approach
Two models were compared: a Random Forest baseline and a convolutional neural network (CNN). Comparing against a simple baseline shows whether the extra complexity of the network earns its place.
Technical architecture
Data came from the MM-Fit dataset. The pipeline cleans and aligns the sensor streams, cuts them into windows, and feeds the windows to each model. Work was split across two Colab notebooks: one for data processing and one for the CNN.
Implementation
The hardest bug was in the data, not the model. Sensor readings and exercise labels had to be matched by timestamp, and a misalignment in that step quietly produced bad training data until it was found and fixed by matching on timestamp ranges at centisecond resolution. The lesson was to verify alignment before trusting any accuracy number.
Trade-offs and decisions
| Option | Trade-off | Chosen |
|---|---|---|
| Random Forest baseline | Simple and quick, but needs hand-built features | Kept as a baseline |
| CNN on raw windows | Learns features itself, but needs careful data handling | Yes |
Results and impact
The final CNN was compact, about 179 KB, and competitive with the larger baseline. Add your measured test accuracy here, and only the number you can reproduce.
Lessons learned
Check the data pipeline first. A model can look fine while learning from misaligned data.
What's next
To write.
Links and resources
Notebooks and the report can be linked here if you want them public.