Skip to content

About

Amazon Music Song Clustering | Unsupervised Machine Learning | K-Means | PCA | Streamlit | Scikit-Learn | Python

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

🎡 Amazon Music Song Clustering using Unsupervised Machine Learning

πŸ“Œ Project Overview

This project applies Unsupervised Machine Learning techniques to cluster Amazon Music songs based on their audio characteristics. The objective is to automatically group similar songs based on their audio features, making it easier to build music recommendation systems, generate playlists, and improve music discovery.

The project includes:

  • Data Exploration and Preprocessing
  • Exploratory Data Analysis (EDA)
  • Feature Scaling using StandardScaler
  • K-Means Clustering
  • Elbow Method for Optimal Cluster Selection
  • Silhouette Score Evaluation
  • PCA Visualization
  • Cluster Interpretation
  • Streamlit Dashboard
  • Model Serialization using Pickle

🎯 Problem Statement

Music streaming platforms contain thousands of songs with varying audio characteristics. Manually organizing songs based on their musical properties is inefficient and time-consuming.

The objective of this project is to automatically group songs with similar audio characteristics using clustering techniques, enabling playlist generation, personalized recommendations, and music discovery.


πŸ“‚ Dataset Information

Dataset: single_genre_artists.csv

Features Used for Clustering

Feature Description
danceability Suitability of a track for dancing
energy Intensity and activity level
loudness Overall loudness of the song
speechiness Presence of spoken words
acousticness Acoustic nature of the track
instrumentalness Probability of containing no vocals
liveness Presence of audience/live recording
valence Musical positivity
tempo Beats per minute
duration_ms Song duration in milliseconds

Reference Columns

  • name_song
  • name_artists
  • genres

These columns are used only for displaying song information and interpreting clusters.


πŸ› οΈ Technologies Used

  • Python
  • Pandas
  • NumPy
  • Matplotlib
  • Seaborn
  • Plotly
  • Scikit-Learn
  • Streamlit
  • Pickle

πŸ“Š Project Workflow

Step 1: Data Loading

  • Load the dataset into Pandas DataFrame.
  • Understand dataset dimensions.
  • Check column names and data types.

Step 2: Data Cleaning

  • Check missing values.
  • Check duplicate records.
  • Remove unnecessary columns.
  • Select relevant numerical features.

Step 3: Exploratory Data Analysis (EDA)

  • Summary statistics
  • Distribution plots
  • Correlation Heatmap

Step 4: Feature Scaling

Apply StandardScaler to standardize feature values.

Reason:

  • K-Means is distance-based.
  • Features should have equal importance.

Step 5: Determine Optimal Number of Clusters

Two evaluation techniques were used:

Elbow Method

  • Calculates Inertia for different K values.
  • Helps identify the optimal number of clusters.

Silhouette Score

  • Measures cluster quality.
  • Higher score indicates better clustering.

Step 6: K-Means Clustering

  • Train K-Means model.
  • Assign cluster labels.
  • Add cluster labels to the original dataset.

Step 7: PCA Visualization

Reduce high-dimensional data into two principal components for visualization.

Step 8: Cluster Interpretation

Analyze average feature values of each cluster to understand song characteristics.

Step 9: Save Models

Using Pickle:

  • scaler.pkl
  • kmeans_model.pkl
  • pca.pkl

Step 10: Streamlit Dashboard

Interactive dashboard providing:

  • Song Search
  • Cluster Filtering
  • PCA Visualization
  • Cluster Distribution
  • Cluster Statistics

πŸ“ˆ Evaluation Metrics

Silhouette Score

Measures how similar a song is to its own cluster compared to other clusters.

Interpretation:

  • Close to 1 β†’ Excellent clustering
  • Close to 0 β†’ Overlapping clusters
  • Less than 0 β†’ Poor clustering

Davies-Bouldin Index

Measures cluster compactness and separation.

Lower value indicates better clustering.


Inertia

Measures cluster compactness.

Used to determine the optimal K using the Elbow Method.


πŸ“· Streamlit Application Screenshots

🏠 Home Page

Home Page


πŸ“Š PCA Visualization

PCA Visualization


🎯 Cluster Analysis

Cluster Analysis


πŸ“‹ Cluster Explorer

Cluster Explorer

πŸ“ Project Structure

AMAZON MUSIC CLUSTERING PROJECT/
β”‚
β”œβ”€β”€ Report/
β”‚   └── Amazon Music Song Clustering Report.pdf
β”‚
β”œβ”€β”€ Screenshots/
β”‚   β”œβ”€β”€ Home Page.png
β”‚   β”œβ”€β”€ PCA Visualization.png
β”‚   β”œβ”€β”€ Cluster Analysis.png
β”‚   └── Cluster Explorer.png
β”‚
β”œβ”€β”€ app.py
β”œβ”€β”€ genre_artists analysis.ipynb
β”œβ”€β”€ README.md
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ scaler.pkl
β”œβ”€β”€ kmeans_model.pkl
β”œβ”€β”€ pca.pkl
β”œβ”€β”€ songs_clustered.csv
└── single_genre_artists.csv

πŸ“‚ Dataset

The songs_clustered.csv dataset is not included in this repository due to its large size.


▢️ Running the Project

1. Clone Repository

git clone <repository-url>

2. Install Dependencies

pip install -r requirements.txt

3. Open Jupyter Notebook

jupyter notebook

Open:

genre_artists analysis.ipynb

4. Run Streamlit Dashboard

streamlit run app.py

πŸ’Ό Business Applications

  • Music Recommendation Systems
  • Playlist Generation
  • Song Similarity Analysis
  • Audio Feature Analysis
  • User Preference Analysis
  • Music Discovery
  • Content Personalization

πŸš€ Future Enhancements

  • Implement DBSCAN Clustering
  • Hierarchical Clustering
  • Personalized Recommendation Engine
  • Cloud Deployment
  • Real-Time Audio Analysis
  • Deep Learning-Based Song Embeddings

πŸ“š Key Learnings

  • Unsupervised Machine Learning
  • K-Means Clustering
  • Principal Component Analysis (PCA)
  • Feature Scaling using StandardScaler
  • Cluster Evaluation Techniques
  • Data Visualization
  • Model Serialization using Pickle
  • Streamlit Dashboard Development

About

Amazon Music Song Clustering | Unsupervised Machine Learning | K-Means | PCA | Streamlit | Scikit-Learn | Python

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages