Personal project · open data
Where a tram network actually jams
The question
Public transport operators know when a service is late. It is harder to say where a network is structurally congested — which stops and time bands consistently absorb delay, as opposed to being unlucky on a particular Tuesday.
The approach
- Västtrafik open data for the Gothenburg region, cleaned and reshaped into stop-level observations across time bands
- Unsupervised clustering with k-means and DBSCAN, used together deliberately: k-means for structured groupings, DBSCAN because the interesting cases are often the ones that refuse to join a cluster
- A composite congestion score, so results are comparable across stops rather than only interpretable within one
- A published Power BI dashboard, because analysis that ends as a PDF gets read once
See it
DBSCAN earns its place here precisely because it is allowed to say “this one belongs nowhere”.
