The Music Mood Analysis and Spotify Wrapped Predictor is a Python-based project designed to analyze users' listening habits and predict their music preferences. By utilizing machine learning models and Spotify's API, the system identifies a user's music mood tendencies and provides insights similar to Spotify Wrapped.
-
Music Mood Prediction:
- Analyzes users' liked songs and categorizes them into moods (Happy, Sad, Chill, Energetic).
- Predicts the mood distribution of a user's music taste using machine learning models.
-
Audio Feature Extraction:
- Extracts key audio features from Spotify playlists and user-saved tracks using Spotipy.
- Uses Essentia for in-depth rhythm and BPM analysis.
-
Data Processing and Cleaning:
- Filters out conflicting moods in duplicated song names.
- Applies Z-score normalization and Standard Scaling to prepare data for model training.
-
Machine Learning Classification:
- Implements multiple classifiers (Random Forest, Decision Trees, SVM, Neural Networks, etc.).
- Selects the best-performing model for mood prediction.
- Programming Language: Python
- Audio Processing: Essentia, Pydub
- Machine Learning: Scikit-learn, NumPy, Pandas
- Spotify API: Spotipy
- Data Handling: JSON, CSV
-
Data Collection:
- Retrieves user's liked songs from Spotify.
- Extracts features from mood-based Spotify playlists.
-
Preprocessing and Feature Engineering:
- Drops irrelevant attributes and normalizes data.
- Handles duplicates and conflicting labels.
-
Model Training & Evaluation:
- Trains multiple classifiers and selects the best model using cross-validation.
-
Music Mood Prediction:
- Predicts the mood distribution of a user's listening habits.
- Outputs a percentage breakdown of each mood category.
- Clone the repository:
git clone https://github.com/ceasarattar/MusicAnalysis.git cd MusicAnalysis
- Set up Spotify API credentials in
library.py
andspotify_mood_playlist.py
. - Run the script to analyze music preferences:
python modeling.py