In [1]:
# import requests
from __future__ import print_function    # (at top of module)
import time
import sys
import os
import pandas as pd
import numpy as np
import pickle

PROJ_ROOT = os.path.join(os.getcwd(), os.pardir)

%load_ext watermark
%watermark -a "Thomas Turner" -d -t -v -p numpy,pandas -g


Thomas Turner 07/31/2016 11:03:05 

CPython 3.5.2
IPython 5.0.0

numpy 1.11.1
pandas 0.18.1
Git hash: 23ee99f8aa682e9b4da872442de9df32b7a22b7a

In [2]:
# load environment variables from .env file using dotenv.
from dotenv import load_dotenv
dotenv_path = os.path.join(PROJ_ROOT, '.env')
load_dotenv(dotenv_path)

# Load the "autoreload" extension
%load_ext autoreload

# always reload modules marked with "%aimport"
%autoreload 1

# add the 'src' directory as one where we can import modules
src_dir = os.path.join(PROJ_ROOT, 'src')
sys.path.append(src_dir)

# import my methods from the source code
%aimport data.spotipy_functions
from data.spotipy_functions import *

In [155]:
# run this to generate a fresh 100 track recomendations from a seed
init_seed = ['5Tfgr1akxH3ioDz1ugiVLW','7fwSIxrSHymHbUtItEmMJv','3wZ5PrSdb3QNgBVYb5udiQ']
trackset = get_new_recs_and_feats(init_seed,100)
trackset = band_BPMs(trackset,80,170)

# run this to SAVE trackset to file
# trackset.to_pickle(os.path.join(PROJ_ROOT,'data','interim','recommends_data_proto1.pkl'))

# run this to LOAD trackset from file
# trackset = pd.read_pickle(os.path.join(PROJ_ROOT,'data','interim','recommends_data_proto1.pkl'))

In [82]:
training_set = get_tracks_details(init_seed).merge(get_features_for_tracks(init_seed), on='id')
training_set['status'] = np.ones(len(init_seed))
training_set['weight'] = np.ones(len(init_seed))
training_set['P_accept'] = np.zeros(len(init_seed))

In [83]:
gui_cols = ['artist_name','track_name','tempo','uri','status','P_accept']
training_set[gui_cols]


Out[83]:
artist_name track_name tempo uri status P_accept
0 Daphni Ye Ye 129.018 spotify:track:5Tfgr1akxH3ioDz1ugiVLW 1.000 0.000
1 Frits Wentink Rising Sun, Falling Coconut 124.128 spotify:track:7fwSIxrSHymHbUtItEmMJv 1.000 0.000
2 Bodhi Brawd 124.003 spotify:track:3wZ5PrSdb3QNgBVYb5udiQ 1.000 0.000

In [134]:
# ONLY RUN THIS TO ACCEPT/REJECT A TRACK

id_to_process = 84
trackset.loc[id_to_process,'status'] = 1
training_set.loc[len(training_set)+1] = trackset.loc[id_to_process]
trackset = trackset.drop([id_to_process])

In [135]:
training_set[gui_cols]


Out[135]:
artist_name track_name tempo uri status P_accept
0 Daphni Ye Ye 129.018 spotify:track:5Tfgr1akxH3ioDz1ugiVLW 1.000 0.000
1 Frits Wentink Rising Sun, Falling Coconut 124.128 spotify:track:7fwSIxrSHymHbUtItEmMJv 1.000 0.000
2 Bodhi Brawd 124.003 spotify:track:3wZ5PrSdb3QNgBVYb5udiQ 1.000 0.000
4 Brandt Brauer Frick Bop 119.996 spotify:track:7IIStj2J5RwY15wellEs9O -1.000 1.000
5 Maya Jane Coles Protect Them - Bonus Track 122.003 spotify:track:1O6KUE9O09eczRQvYzhl4O -1.000 1.000
6 Isolée Paloma Triste 111.909 spotify:track:4atM2g2NaTWrn0cswBhSyj -1.000 1.000
7 Maya Jane Coles Blame 110.027 spotify:track:2EG4aHhnfbK7T0YtiIQ2Zb -1.000 1.000
8 Motor City Drum Ensemble Feel the Love 115.006 spotify:track:5VM11vVe6Ib8YIYZg7NKuM 1.000 1.000
9 Fort Romeau Say Something 125.040 spotify:track:1QtOnUVFzMD7g4E9tjofTw -1.000 1.000
10 Jimmy Edgar Hrt Real Good 108.053 spotify:track:0VDErq8M39gjVh013GEItl -1.000 1.000
11 Brandt Brauer Frick Skiffle It Up 160.018 spotify:track:2tEBzZ9ccfkpyO3ztULbgK -1.000 1.000
12 Daphni Jiao 120.002 spotify:track:2kPT6YfORkg9e1AfkY7QBn 1.000 1.000
13 Scuba Adrenalin 125.000 spotify:track:2uOS5MmoemEsC0KZagDGJl 1.000 1.000

In [ ]:


In [156]:
# np.set_printoptions(precision=4)
# np.set_printoptions(suppress=True)

useful_features = ['acousticness','danceability','instrumentalness','energy','speechiness','tempo','valence']
X = training_set[useful_features]
Y = training_set.status
w = training_set.weight

In [157]:
from sklearn.naive_bayes import GaussianNB
clf = GaussianNB()
clf.fit(X, Y, sample_weight=w)


Out[157]:
GaussianNB()

In [158]:
pd.options.display.float_format = '{:,.3f}'.format
predicts = pd.DataFrame(clf.predict_proba(trackset[useful_features]))
predicts.columns = ['P_reject','P_accept']
trackset.P_accept = predicts['P_accept']
trackset = trackset.sort_values(by=['P_accept'], ascending=False)
trackset[gui_cols]


Out[158]:
artist_name track_name tempo uri status P_accept
31 Fort Romeau IKB 134.994 spotify:track:2tVs6akVfFJFUm0MEFvCVH 0.000 1.000
18 Fort Romeau Nights Bridge 125.998 spotify:track:3IfHaF1kje7F1ANEXDQdqw 0.000 1.000
13 Scuba Minerals 136.992 spotify:track:7sj1qZp33UVyc8fVROa5ns 0.000 0.986
28 Brandt Brauer Frick Caffeine 111.985 spotify:track:6ms26kXKrgrUoFp5Mpcw1h 0.000 0.985
76 Daniel Avery Free Floating 121.969 spotify:track:0FbA1IhV7pzUPFiexkARyd 0.000 0.981
92 Fort Romeau Insides 116.968 spotify:track:34KD9rEJujgvmNLQblQAjw 0.000 0.975
55 Maya Jane Coles What They Say 125.012 spotify:track:7HlvFIJDmcQRRn45aRd46t 0.000 0.973
27 Daniel Avery Flashlights - Original Mix 115.022 spotify:track:77mLxqm1lFnBWWfoybyHj6 0.000 0.973
70 Brandt Brauer Frick Iron Man 124.000 spotify:track:7v7PGRp84YqsAaxx4DGelQ 0.000 0.973
69 Fort Romeau I Knew 121.754 spotify:track:0JWipkRSb9TTyH8IFjGtsL 0.000 0.973
66 Kevin McPhee The Blind Whirring of Machinery 122.949 spotify:track:3iLIa68tRbddSeYij74L7z 0.000 0.972
85 Isolée Rest 121.996 spotify:track:04lJBtNtL811sKa65vjdNZ 0.000 0.971
3 Brandt Brauer Frick Mi Corazon 121.991 spotify:track:5TCn48Ei61wnQJjqDzVH6m 0.000 0.970
7 Jimmy Edgar Feel What It Is 128.973 spotify:track:3tFOZbK9tts55vbJCJhB7R 0.000 0.965
49 Art Department Catch You By Surprise - &ME Terrace Dub 120.001 spotify:track:11qO5uNBbjjxZokcSnS0xB 0.000 0.954
16 Pantha Du Prince Sach Mal Baum 126.020 spotify:track:7oBA3DM9eKb4ZchiNkm9hc 0.000 0.951
0 Kevin McPhee CC-XXX-YY-NNNNN - Trevino Remix 125.999 spotify:track:0exoJBj4ZYtScIvkgcjVdd 0.000 0.950
35 Maya Jane Coles Rugged 124.999 spotify:track:5nO7NMJ3QUVjc58rWlXkDT 0.000 0.947
15 Kevin McPhee In Circles - Kamikaze Space Programme’s Drum Tool 128.009 spotify:track:67boGOMaMQcKOhsCh8Bhbs 0.000 0.939
47 Isolée My Hi-Matic 123.996 spotify:track:5DDdlDAodj9gy3RNdw6CxV 0.000 0.939
95 Isolée Willy Skipper 123.350 spotify:track:6gmqHwpDifVBHpYAhYItpm 0.000 0.931
99 Motor City Drum Ensemble Get Slapped Up 120.993 spotify:track:5SY2QQEq5YPC6ch4pP5U9I 0.000 0.900
45 Scuba On Deck 126.990 spotify:track:0RgOmbkC68Wxfbjx3hygOj 0.000 0.897
24 Art Department The Hunt - Maher Daniel Remix 120.976 spotify:track:6xN031HLVvM6DNeo59Dkw5 0.000 0.894
71 Sinden Mathematical 126.038 spotify:track:594ITuD7ekQpwCQphMjuT3 0.000 0.893
58 Daphni Jiao 120.002 spotify:track:2kPT6YfORkg9e1AfkY7QBn 0.000 0.883
62 Isolée One Box 122.006 spotify:track:1iVYmmJkaf3wYUQUTLjp1w 0.000 0.881
26 Motor City Drum Ensemble Feel the Love 115.006 spotify:track:5VM11vVe6Ib8YIYZg7NKuM 0.000 0.880
84 Jimmy Edgar Tik Tok 125.945 spotify:track:6wj59VO93Dy83TQdrKa4DC 0.000 0.871
97 Kevin McPhee Unwind 122.996 spotify:track:4VPeZP0y4YmbKIqyzhiN49 0.000 0.869
... ... ... ... ... ... ...
53 Motor City Drum Ensemble Send A Prayer (Part.1) 118.007 spotify:track:6hIe74AKL3RfBxdbIcORxu 0.000 0.373
6 Fort Romeau Diana 120.006 spotify:track:7vKiUDrWOZTfjB5P0V4Xbn 0.000 0.372
42 Isolée Thirteen Times An Hour 121.011 spotify:track:1WZAGMmt0iMwkVDpkSIh4R 0.000 0.270
29 Isolée Démon 113.011 spotify:track:07Eekpp2nbHHiSESPa0GXZ 0.000 0.247
25 Kevin McPhee Hang My Head 113.017 spotify:track:37qfyqzycOcLtzcJOzAu0p 0.000 0.156
60 Jimmy Edgar Hot, Raw, Sex 119.999 spotify:track:5i4NsY8Gjah5uKxvAdmDPP 0.000 0.147
67 Pantha Du Prince The Splendour 122.983 spotify:track:6qrdUi2Gemc0dlT0wUcGj3 0.000 0.093
57 Fort Romeau Jetée 120.001 spotify:track:3gIeoIMQLfWDTBTEpqugnm 0.000 0.071
90 Jimmy Edgar Funktion - Instrumental 114.989 spotify:track:4Ox1uBjQrU49HLLYafkD5u 0.000 0.069
86 Fort Romeau Seleno 113.007 spotify:track:2PkzYaCwfbOioOQSKkGyeq 0.000 0.042
12 Motor City Drum Ensemble Monorail 117.788 spotify:track:0tIzZPDBUdKhMktUjXfNHF 0.000 0.039
38 Kevin McPhee Your Side 112.014 spotify:track:49a927nCW6u95A57APhZ7V 0.000 0.036
32 Zomby Alothea 124.998 spotify:track:3Wb54Y3MC40T8CYk2Lbtlj 0.000 0.021
78 Pantha Du Prince Hieroglyphic Being version of “Satellite Sniper” 135.081 spotify:track:3e6Au6sA77kkAuSErt6K38 0.000 0.020
10 Isolée Paloma Triste 111.909 spotify:track:4atM2g2NaTWrn0cswBhSyj 0.000 0.011
51 Daniel Avery Simulrec 110.005 spotify:track:3p4iilOEs5llqXvBsTnvcS 0.000 0.007
83 Art Department Robot Heart - Original Mix 123.029 spotify:track:357gDyn5ReEMTuhIEsREpy 0.000 0.004
36 Fort Romeau Cloche 122.979 spotify:track:6I3WSgRwUuCZsCiirAEiI8 0.000 0.000
68 Jimmy Edgar Pret'a'porter 145.988 spotify:track:6r2PNcCkXBRRYTEBc3wACG 0.000 0.000
50 Fort Romeau Jack Rollin' 121.015 spotify:track:1rLRZ4JVnBdgW1HtE32J1K 0.000 0.000
43 Fort Romeau Stay / True 102.011 spotify:track:6VhTt31pxS6p3yJwqRe9na 0.000 0.000
2 Jimmy Edgar Attempt to Make It Last 129.973 spotify:track:58d3iyxLNWJDlWmXnpIrlL 0.000 0.000
11 Daphni Cos-Ber-Zam Ne Noya - Daphni Mix 120.022 spotify:track:73gFXHLfw8ym6guep2XaIb 0.000 0.000
65 Art Department What Does It Sound Like? 121.001 spotify:track:4phsRl9noQauIhcjwjXIaS 0.000 0.000
17 Maya Jane Coles Stranger 121.996 spotify:track:02lGNU03crjpiktmNi9vEn 0.000 0.000
44 Jimmy Edgar U Need Love - Digital Exclusive 120.993 spotify:track:5Ty8scf7sHl1M0oTpElc9b 0.000 0.000
54 Jimmy Edgar I Need Your Control 119.964 spotify:track:0GBTyHJY52Eyob5U4dxep8 0.000 0.000
63 Maya Jane Coles Blame 110.027 spotify:track:2EG4aHhnfbK7T0YtiIQ2Zb 0.000 0.000
48 Maya Jane Coles Burning Bright 119.984 spotify:track:5pxeEYzhiu8kEvsJZl5rWy 0.000 0.000
77 Motor City Drum Ensemble Raw Cuts #3 116.967 spotify:track:7kcUCIpVBK6w1OwoiiPSpi 0.000 0.000

100 rows × 6 columns


In [148]:
import seaborn as sb
#sb.pairplot(trackset[useful_features + ['P_accept']].dropna())
sb.pairplot(training_set[useful_features + ['status']].dropna(), hue='status')
sb.plt.show()

In [ ]:


In [ ]:


In [ ]: