How d4nc3w/music-genre-clustering works
This repository provides music-feature clustering through a FastAPI service and a Typer CLI. Users can submit songs for clustering-model training, request cluster predictions, list saved models, and optimize KMeans parameters against the Spotify dataset. A separate PyCaret training path and Optuna objective support CLI workflows. The sampled source shows model artifacts saved as joblib files and an SQLite Optuna study; the dataset is represented in the tree by a DVC pointer. The graph omits uninspected deployment and DVC remote wiring.
Main entry points: controller.py API controller · cli.py Training CLI · main.py HTTP API · train.py PyCaret training
Components 12
User interfaces
- HTTP API
src/main.py - Training CLI
src/cli.py
API workflow
- Request schemas
src/api/models.py - API controller
src/api/controller.py
Clustering workflows
- Model operations
src/model_utils/utils.py - PyCaret training
src/pycaret/train.py - Optuna objective
src/optuna/find_hyperparemeter.py
Data and artifacts
- Spotify dataset
data/Spotify-2000.csv.dvc - Joblib models
models/model.joblib - Optuna study DB
Other components
- API caller
- CLI user
Connections 15
- API caller → HTTP API: sends requests
- HTTP API → Request schemas: validates payloads
- HTTP API → API controller: dispatches handlers
- API controller → Model operations: trains or predicts
- API controller → Model operations: lists models
- API controller → Optuna objective: optimizes parameters
- CLI user → Training CLI: runs commands
- Training CLI → PyCaret training: trains model
- Training CLI → Optuna objective: optimizes parameters
- Optuna objective → Spotify dataset: reads via DVC checkout
- PyCaret training → Spotify dataset: reads CSV
- Model operations → Joblib models: writes and loads
- PyCaret training → Joblib models: saves model
- API controller → Optuna study DB: stores study
- Training CLI → Optuna study DB: stores study