michaelml.dev / Michael_Portfolio.ipynb
A Flask-based web application that provides artist recommendations using clustering techniques. It integrates with Spotify's API to fetch track previews and related artist information.
[ ]
code · MusicMap
project = load_project("music-map")
project.summary()Output

MusicMap
A Flask-based web application that provides artist recommendations using clustering techniques. It integrates with Spotify's API to fetch track previews and related artist information.
FlaskPythonK-Means ClusteringSpotify APIPandasSpotipyMatplotlibMachine LearningREST APIJavaScriptUnsupervised LearningData Mining
[ ]
code · Problem definition
project = load_project("music-map")
project.problem()Output
ProblemListeners need a simple way to explore artists by musical similarity rather than popularity alone.
ApproachCluster normalized artist features with K-Means and enrich same-cluster recommendations with Spotify metadata and track previews.
OutcomeDelivered an interactive recommendation prototype and clustering visualization; no user-adoption metric is claimed.
[ ]
code · Constraints
project = load_project("music-map")
project.constraints()Output
Constraints
- Similarity had to be inferred without labeled recommendation pairs.
- Spotify metadata and previews depended on an external API.
- Artist features needed normalization before distance-based clustering.
[ ]
code · Role and implementation
project = load_project("music-map")
project.implementation()Output
Role and implementation
My role: Built the clustering workflow, Flask service, artist lookup, Spotify integration, and asynchronous web experience.
- Clustered artist feature vectors with K-Means.
- Built constant-time cluster lookup in a Flask application.
- Fetched Spotify previews, related artists, and metadata with Spotipy.
[ ]
code · Architecture
project = load_project("music-map")
project.show_architecture()Output
Data IngestionLoad artist dataset from CSV with normalized features for clustering (genre, popularity, audio characteristics)
K-Means ClusteringApply unsupervised clustering algorithm to group artists by similarity, creating distinct musical clusters
User Query ProcessingReceive artist name via Flask POST endpoint, validate input, and locate artist in dataset
Cluster Similarity SearchIdentify all artists in the same cluster as the queried artist, representing similar musical characteristics
Spotify API IntegrationAuthenticate with Spotify Client Credentials, fetch track previews, artist metadata, and related artist data
Response DeliveryReturn JSON with similar artists, 30-second track previews, and Spotify metadata to frontend for playback
[ ]
code · Demo and media
project = load_project("music-map")
project.media()Output

[ ]
code · Evaluation
project = load_project("music-map")
project.evaluation()Output
Evaluation
- Visualized cluster structure and compared recommendations with Spotify related artists.
- No offline relevance benchmark is documented.
[ ]
code · Results
project = load_project("music-map")
project.results()Output
Results
- Produced a working artist-discovery application with playable previews.
- The project is presented as an unsupervised recommendation study.
[ ]
code · Tradeoffs and failures
project = load_project("music-map")
project.tradeoffs()Output
Tradeoffs
- K-Means is simple and explainable but assumes roughly spherical clusters.
- External API availability limits which previews can be shown.
[ ]
code · What I would improve
project = load_project("music-map")
project.improvements()Output
Improvements
- Add listener feedback and evaluate recommendation relevance.
- Compare density-based, graph, and embedding-driven recommendation methods.
[ ]