- Developer: Johnny Chiu
- Product Owner: Spencer Moon
- QA: Yuqing Liu
The goal of the project is to build a music recommender application from scratch.
- Vision: Engage music fans by recommending select number of songs based on user’s song and genre preference.
- Mission: The goal of the project is to help people discover the music they may enjoy by providing them a list of recommended songs according to their favorite musicians and songs. This will be done using a collaborative filtering or a latent factor recommender model that is trained with the Million Song Dataset.
- SuccessCriteria: Successfully deployed a web application that dynamically shows a recommended list of songs according to users’ input.
For this project, we used Pivotal Tracker, an Agile Project Management Software, to keep track of the overall progress. The pivotal tracker page for this project can be reached by clicking on this link.
-
Clone repository.
-
Use conda to create virtual environment
> Music-Recommender$ conda create -n musicproject python=3 > Music-Recommender$ source activate musicproject
-
Install required packages
> (musicproject) Music-Recommender$ pip install -r requirements.txt
-
Set up music.env file with the following structure
export DATABASE_URL=XXX export HOST=XXX export USER=XXX export PASSWORD=XXX export DBNAME=XXX export PORT=XXX
-
Set environment variables from file
source music.env
-
Get data and save it into your mySQL database
> (musicproject) Music-Recommender$ cd src/database > (musicproject) database$ python create_db.py > (musicproject) database$ python insert_data.py
Note that the data is downloaded from the url provided by the company Turi using the following two hyperlinks. Download User Listening History Data and Download Song Meta Data.
-
(OPTIONAL) If you want to run unit tests before launch the application, run the following commands:
> (musicproject) Music-Recommender$ cd test/ > (musicproject) Music-Recommender$ pytest > (musicproject) Music-Recommender$ cd ..
-
Launch the application
> (musicproject) Music-Recommender$ python application.py
-
modelSelectionAndTuning.ipynb
: Jupyter Notebook that contains a walkthrough of the overall model building, model selection and parameter tuning. [jupyter notebook] -
latentFactorModel.ipynb
: An old version of the overall model building process. [jupyter notebook] -
Step by step guide for database, environment and sphinx documentation set up. [Github Wiki]
-
You can find the slides for this project here.
├── LICENSE
│
├── README.md <- The top-level README for developers using this project.
│
├── requirements.txt <- The requirements file for reproducing the analysis environment, e.g. generated with `pip freeze > requirements.txt`
│
├── pic <- some picture for demo purpose
│
├── web <- HTML and CSS files
│
├── form <- user form selection files
│
├── data <- Data files
│
├── src <- Source code for use in this project.
│ ├── __init__.py <- Makes src a Python module
│ │
│ ├── database <- Scripts to download and generate data
│ │
│ ├── models <- Scripts to train models and then use trained models to make predictions
│ │
│ └── notebooks <- Jupyter notebooks. Used to reate exploratory, results oriented visualizations, and parameter tuning
├── docs <- A default Sphinx project; see sphinx-doc.org for details
│
├── test <- Unit tests
│
├── log <- Logging files