PY-Music-Genre-Classifier est un projet qui prédit les genres musicaux en analysant les caractéristiques audio des morceaux. En utilisant des modèles d'apprentissage supervisé tels que RandomForest, XGBoost et CatBoost, ce projet classe les chansons en fonction de leurs attributs sonores, offrant ainsi une approche automatisée pour catégoriser les genres musicaux de manière précise.
Explorer »
Table des matières
Ce projet repose sur la construction d'un ensemble de données combinant les informations collectées via l'API de Spotify et un second jeu de données provenant de Kaggle. Ces données contiennent des caractéristiques audio et des métadonnées de morceaux, permettant ainsi de classifier des genres musicaux. Le pipeline inclut la collecte automatisée des données, le prétraitement, ainsi que l'ingénierie des caractéristiques. Des modèles d'apprentissage supervisé tels que RandomForest, XGBoost et CatBoost sont ensuite entraînés et évalués à l'aide de métriques de performance telles que l'accuracy et le score F1, afin de garantir une prédiction précise des genres musicaux.
Fonctionnalités principales :
- Collecte des données via l'API Spotify.
- Prétraitement des données et ingénierie des caractéristiques.
- Entraînement et évaluation des modèles.
Music-Genre-Classifier/ ├── notebooks/ │ ├── main.ipynb # Notebook détaillé contenant toutes les fonctions utilisées │ ├── simplified_main.ipynb # Notebook allégé pour une lecture et une exécution plus rapide │ └── utils.py # Fonctions utiles et scripts partagés ├── src/ │ ├── data_collection.py # Script d'import des données via l'API Spotify │ ├── data_processing.py # Nettoyage des données brutes │ └── train_model.py # Entraînement du modèle de ML ├── README.md ├── requirements.txt └── .gitignore
Nous avons d'abord construit notre jeu de données à l'aide de l'API Spotify. Pour chaque morceau, nous avons récupéré les caractéristiques suivantes :
- Caractéristiques audio : danceability, energy, key, loudness, mode, speechiness, acousticness, instrumentalness, liveness, valence, tempo.
- Métadonnées : nom du morceau, artiste, popularité, drapeau explicite, durée (ms), signature temporelle, étiquette de genre.
Les appels à l'API ont été automatisés et les données ont été enregistrées au format CSV.
Cependant comme expliqué dans les notebooks, un changement dans la politique de Spotify apparu fin Novembre 2024 nous a empeché de terminer la construction de notre dataset. Voilà pourquoi nous utilisons dans les parties data-preprocessing, feature-engineering et train-model les données issues d'un dataframe Kaggle collectées quelques années auparavant de la même manière que nous avons pu mettre en place.
Nous avons expérimenté avec plusieurs modèles de machine learning :
- Prétraitement des données : Gestion des valeurs manquantes, standardisation des variables numériques et encodage des données catégorielles.
- Modèles utilisés :
- RandomForest
- XGBoost
- CatBoost
- Métriques d'évaluation : Accuracy, Précision, Rappel, Score F1.
- Python 3
- Pandas
- Scikit-Learn
- CatBoost
- XGBoost
Suivez ces étapes pour configurer le projet en local :
- Python 3.x installé
- Bibliothèques nécessaires :
pip install -r requirements.txt
- Clonez le dépôt :
git clone https://github.com/moranenzo/PY-Music-Genre-Classifier.git
- Accédez au répertoire du projet :
cd PY-Music-Genre-Classifier
Exécutez la commande suivante pour entraîner le modèle (CatBoost par défaut):
python src/train_model.py
Exécutez la commande suivante pour évaluer le modèle :
python src/evaluate_model.py
- Enzo MORAN - LinkedIn - [email protected]
- Martin CONTE - LinkedIn - [email protected]
- Tom LAFLOTTE - LinkedIn - [email protected]