NYU COURSE PROJECT · PYTHON DEMO

Hitting the Vibe

Ten guests bring their favorite songs. How do you turn ten collections into one party playlist?

How Python builds the playlist

  1. Give each guest 25 random tracks from the 300 most popular songs in the dataset.
  2. Keep each guest’s ten highest-scoring tracks and remove duplicates. Party score = danceability + energy − acousticness.
  3. Compare each candidate with every other candidate using cosine similarity across six audio features. Keep the 25 with the highest average similarity.

Switch samples to see another group’s favorites. Keep the sample fixed and switch scoring modes to see how feature scaling changes the rankings.

10 guests → 100 picks → 77 unique candidates → 25 final tracks

What stands out at this party?

Most shared guest picks: Whine Up (Nicky Jam) and Don't Start Now (Dua Lipa). Guest votes per track: 3. Switching scoring modes replaces 10 tracks in the final playlist.

Final playlist

Track Artist Genre Party score Mean similarity
1 No Me Conoce - Remix Jhay Cortez rap 1.440 0.976
2 One Kiss (with Dua Lipa) Calvin Harris pop 1.616 0.975
3 I Like It Cardi B pop 1.443 0.975
4 Believer Imagine Dragons latin 1.494 0.975
5 2002 Anne-Marie pop 1.343 0.974
6 Te Vi Piso 21 latin 1.609 0.974
7 Don't Start Now Dua Lipa pop 1.575 0.973
8 Taki Taki (with Selena Gomez, Ozuna & Cardi B) DJ Snake pop 1.486 0.973
9 Sweet but Psycho Ava Max pop 1.354 0.973
10 New Rules Dua Lipa pop 1.459 0.973
11 Adicto (with Anuel AA & Ozuna) Tainy pop 1.553 0.972
12 So Am I Ava Max pop 1.264 0.972
13 Promises (with Sam Smith) Calvin Harris pop 1.537 0.972
14 10,000 Hours (with Justin Bieber) Dan + Shay pop 1.131 0.972
15 Quizas Rich Music LTD latin 1.516 0.971
16 Turn Me On (feat. Vula) Riton pop 1.550 0.971
17 VALENTINO 24kGoldn rap 1.266 0.971
18 RITMO (Bad Boys For Life) The Black Eyed Peas pop 1.404 0.971
19 Higher Love Kygo pop 1.356 0.970
20 Whine Up Nicky Jam latin 1.427 0.970
21 Sigues Con El Dimelo Flow latin 1.441 0.969
22 Que Calor (feat. J Balvin & El Alfa) Major Lazer pop 1.643 0.968
23 Vete Bad Bunny rap 1.522 0.968
24 HAD ENOUGH (feat. Quavo & Offset) Don Toliver rap 1.286 0.967
25 Murder On My Mind YNW Melly rap 1.344 0.967

Genre breakdown

  • pop15 tracks
  • rap5 tracks
  • latin5 tracks

Final playlist

Track Artist Genre Party score Mean similarity
1 New Rules Dua Lipa pop 1.459 0.065
2 You Need To Calm Down Taylor Swift pop 1.433 0.065
3 Whine Up Nicky Jam latin 1.427 0.057
4 RITMO (Bad Boys For Life) The Black Eyed Peas pop 1.404 0.055
5 Don't Start Now Dua Lipa pop 1.575 0.052
6 That's What I Like Bruno Mars pop 1.400 0.052
7 Promises (with Sam Smith) Calvin Harris pop 1.537 0.051
8 Sweet but Psycho Ava Max pop 1.354 0.048
9 Roses - Imanbek Remix SAINt JHN pop 1.477 0.047
10 Sucker Jonas Brothers pop 1.533 0.045
11 I Don't Care (with Justin Bieber) Ed Sheeran pop 1.382 0.044
12 Turn Me On (feat. Vula) Riton pop 1.550 0.033
13 One Dance Drake pop 1.409 0.032
14 Te Vi Piso 21 latin 1.609 0.032
15 The Box Roddy Ricch rap 1.378 0.031
16 Adicto (with Anuel AA & Ozuna) Tainy pop 1.553 0.031
17 HUMBLE. Kendrick Lamar pop 1.529 0.029
18 So Am I Ava Max pop 1.264 0.026
19 Higher Love Kygo pop 1.356 0.026
20 Fuck Love (feat. Trippie Redd) XXXTENTACION rap 1.313 0.025
21 Believer Imagine Dragons latin 1.494 0.020
22 Sigues Con El Dimelo Flow latin 1.441 0.018
23 2002 Anne-Marie pop 1.343 0.017
24 Murder On My Mind YNW Melly rap 1.344 0.015
25 hot girl bummer blackbear pop 1.209 0.014

Genre breakdown

  • pop18 tracks
  • latin4 tracks
  • rap3 tracks

What did each guest pick?

Guest 1 · 10 tracks
Track Artist Genre Party score
1 Vete Bad Bunny rap 1.522
2 Thunder Imagine Dragons pop 1.420
3 In the End Linkin Park rock 1.410
4 Livin' On A Prayer Bon Jovi rock 1.341
5 Peta (feat. Meek Mill) Roddy Ricch rap 1.336
6 Otro Trago Sech latin 1.311
7 High Hopes Panic! At The Disco pop 1.290
8 Don't Call Me Up Mabel pop 1.259
9 Loco Contigo (feat. J. Balvin & Tyga) DJ Snake pop 1.174
10 Combatchy (feat. MC Rebecca) Anitta latin 1.173
Guest 2 · 10 tracks
Track Artist Genre Party score
1 Turn Me On (feat. Vula) Riton pop 1.550
2 Woah Lil Baby rap 1.466
3 Never Really Over Katy Perry pop 1.458
4 Hot (feat. Gunna) Young Thug rap 1.443
5 Whine Up Nicky Jam latin 1.427
6 I Don't Care (with Justin Bieber) Ed Sheeran pop 1.382
7 A Gente Fez Amor - Ao Vivo Gusttavo Lima edm 1.364
8 Blinding Lights The Weeknd pop 1.308
9 Futsal Shuffle 2020 Lil Uzi Vert rap 1.305
10 Pumped Up Kicks Foster The People pop 1.298
Guest 3 · 10 tracks
Track Artist Genre Party score
1 Make No Sense YoungBoy Never Broke Again rap 1.588
2 Believer Imagine Dragons latin 1.494
3 Roses - Imanbek Remix SAINt JHN pop 1.477
4 Drip Too Hard (Lil Baby & Gunna) Lil Baby pop 1.474
5 Love The Way You Lie Eminem latin 1.433
6 I Don't Care (with Justin Bieber) Ed Sheeran pop 1.382
7 The London (feat. J. Cole & Travis Scott) Young Thug rap 1.357
8 Sweet but Psycho Ava Max pop 1.354
9 Wake Me Up Avicii pop 1.311
10 FRIENDS Marshmello pop 1.301
Guest 4 · 10 tracks
Track Artist Genre Party score
1 Don't Start Now Dua Lipa pop 1.575
2 Can't Hold Us - feat. Ray Dalton Macklemore & Ryan Lewis pop 1.534
3 New Rules Dua Lipa pop 1.459
4 Sigues Con El Dimelo Flow latin 1.441
5 HAD ENOUGH (feat. Quavo & Offset) Don Toliver rap 1.286
6 VALENTINO 24kGoldn rap 1.266
7 Watermelon Sugar Harry Styles pop 1.242
8 Money In The Grave (Drake ft. Rick Ross) Drake rap 1.232
9 hot girl bummer blackbear pop 1.209
10 10,000 Hours (with Justin Bieber) Dan + Shay pop 1.131
Guest 5 · 10 tracks
Track Artist Genre Party score
1 Te Vi Piso 21 latin 1.609
2 Own It (feat. Ed Sheeran & Burna Boy) Stormzy latin 1.590
3 Sucker Jonas Brothers pop 1.533
4 Quizas Rich Music LTD latin 1.516
5 Sigues Con El Dimelo Flow latin 1.441
6 ZEZE Kodak Black pop 1.412
7 That's What I Like Bruno Mars pop 1.400
8 no tears left to cry Ariana Grande pop 1.372
9 Higher Love Kygo pop 1.356
10 Hot (Remix) [feat. Gunna and Travis Scott] Young Thug pop 1.288
Guest 6 · 10 tracks
Track Artist Genre Party score
1 Make No Sense YoungBoy Never Broke Again rap 1.588
2 Don't Start Now Dua Lipa pop 1.575
3 Adicto (with Anuel AA & Ozuna) Tainy pop 1.553
4 XO Tour Llif3 Lil Uzi Vert pop 1.479
5 Roses - Imanbek Remix SAINt JHN pop 1.477
6 No Me Conoce - Remix Jhay Cortez rap 1.440
7 You Need To Calm Down Taylor Swift pop 1.433
8 Whine Up Nicky Jam latin 1.427
9 One Dance Drake pop 1.409
10 OUT WEST (feat. Young Thug) JACKBOYS rap 1.383
Guest 7 · 10 tracks
Track Artist Genre Party score
1 Que Calor (feat. J Balvin & El Alfa) Major Lazer pop 1.643
2 Quizas Rich Music LTD latin 1.516
3 Believer Imagine Dragons latin 1.494
4 Taki Taki (with Selena Gomez, Ozuna & Cardi B) DJ Snake pop 1.486
5 I Like It Cardi B pop 1.443
6 Murder On My Mind YNW Melly rap 1.344
7 2002 Anne-Marie pop 1.343
8 Here With Me Marshmello pop 1.294
9 So Am I Ava Max pop 1.264
10 hot girl bummer blackbear pop 1.209
Guest 8 · 10 tracks
Track Artist Genre Party score
1 Baila Conmigo (feat. Kelly Ruiz) Dayvi latin 1.708
2 New Rules Dua Lipa pop 1.459
3 Ride It Regard pop 1.454
4 One Dance Drake pop 1.409
5 no tears left to cry Ariana Grande pop 1.372
6 2002 Anne-Marie pop 1.343
7 Livin' On A Prayer Bon Jovi rock 1.341
8 Fuck Love (feat. Trippie Redd) XXXTENTACION rap 1.313
9 Tutu Camilo latin 1.290
10 In My Mind Dynoro pop 1.288
Guest 9 · 10 tracks
Track Artist Genre Party score
1 Te Vi Piso 21 latin 1.609
2 Own It (feat. Ed Sheeran & Burna Boy) Stormzy latin 1.590
3 Promises (with Sam Smith) Calvin Harris pop 1.537
4 Sucker Jonas Brothers pop 1.533
5 Never Really Over Katy Perry pop 1.458
6 Take on Me a-ha pop 1.457
7 Whine Up Nicky Jam latin 1.427
8 Wolves Selena Gomez pop 1.404
9 RITMO (Bad Boys For Life) The Black Eyed Peas pop 1.404
10 The Box Roddy Ricch rap 1.378
Guest 10 · 10 tracks
Track Artist Genre Party score
1 One Kiss (with Dua Lipa) Calvin Harris pop 1.616
2 Immortal 21 Savage rap 1.603
3 Don't Start Now Dua Lipa pop 1.575
4 Adicto (with Anuel AA & Ozuna) Tainy pop 1.553
5 HUMBLE. Kendrick Lamar pop 1.529
6 Que Tire Pa Lante Daddy Yankee pop 1.511
7 Woah Lil Baby rap 1.466
8 Dancin (feat. Luvli) - Krono Remix Aaron Smith pop 1.360
9 Hate Me (with Juice WRLD) Ellie Goulding pop 1.317
10 Fuck Love (feat. Trippie Redd) XXXTENTACION rap 1.313

10 guests → 100 picks → 72 unique candidates → 25 final tracks

What stands out at this party?

Most shared guest picks: New Rules (Dua Lipa). Guest votes per track: 4. Switching scoring modes replaces 12 tracks in the final playlist.

Final playlist

Track Artist Genre Party score Mean similarity
1 Believer Imagine Dragons latin 1.494 0.975
2 2002 Anne-Marie pop 1.343 0.974
3 I Like It Cardi B pop 1.443 0.974
4 Te Vi Piso 21 latin 1.609 0.974
5 Don't Start Now Dua Lipa pop 1.575 0.973
6 New Rules Dua Lipa pop 1.459 0.973
7 No Me Conoce - Remix Jhay Cortez pop 1.447 0.973
8 No Me Conoce - Remix Jhay Cortez rap 1.440 0.972
9 Maniac Conan Gray r&b 1.269 0.972
10 RITMO (Bad Boys For Life) The Black Eyed Peas pop 1.404 0.971
11 Adore You Harry Styles pop 1.423 0.971
12 Adore You Harry Styles pop 1.423 0.971
13 Con Calma Daddy Yankee pop 1.487 0.971
14 Whine Up Nicky Jam latin 1.427 0.970
15 Piece Of Your Heart MEDUZA latin 1.381 0.970
16 Up All Night Khalid pop 1.376 0.967
17 Otro Trago - Remix Sech rap 1.444 0.967
18 Higher Love Kygo pop 1.356 0.967
19 Murder On My Mind YNW Melly rap 1.344 0.966
20 Hot (feat. Gunna) Young Thug rap 1.443 0.966
21 Happier Marshmello pop 1.288 0.964
22 South of the Border (feat. Camila Cabello & Cardi B) Ed Sheeran pop 1.330 0.963
23 ZEZE Kodak Black pop 1.412 0.963
24 Ayy Macarena Tyga pop 1.313 0.962
25 no tears left to cry Ariana Grande pop 1.372 0.962

Genre breakdown

  • pop16 tracks
  • latin4 tracks
  • rap4 tracks
  • r&b1 track

Final playlist

Track Artist Genre Party score Mean similarity
1 RITMO (Bad Boys For Life) The Black Eyed Peas pop 1.404 0.060
2 New Rules Dua Lipa pop 1.459 0.055
3 Whine Up Nicky Jam latin 1.427 0.049
4 That's What I Like Bruno Mars pop 1.400 0.047
5 Roses - Imanbek Remix SAINt JHN pop 1.477 0.046
6 Señorita Shawn Mendes pop 1.268 0.043
7 Sucker Jonas Brothers pop 1.533 0.042
8 Don't Start Now Dua Lipa pop 1.575 0.042
9 Piece Of Your Heart MEDUZA latin 1.381 0.040
10 Up All Night Khalid pop 1.376 0.037
11 I Don't Care (with Justin Bieber) Ed Sheeran pop 1.382 0.037
12 The Less I Know The Better Tame Impala rock 1.368 0.032
13 Adore You Harry Styles pop 1.423 0.028
14 Adore You Harry Styles pop 1.423 0.028
15 One Dance Drake pop 1.409 0.025
16 Te Vi Piso 21 latin 1.609 0.024
17 Higher Love Kygo pop 1.356 0.023
18 2002 Anne-Marie pop 1.343 0.023
19 Maniac Conan Gray r&b 1.269 0.021
20 The Box Roddy Ricch rap 1.378 0.021
21 My Oh My (feat. DaBaby) Camila Cabello pop 1.197 0.018
22 Believer Imagine Dragons latin 1.494 0.012
23 MIA (feat. Drake) Bad Bunny rap 1.342 0.005
24 Take on Me a-ha pop 1.457 0.004
25 Can't Hold Us - feat. Ray Dalton Macklemore & Ryan Lewis pop 1.534 0.003

Genre breakdown

  • pop17 tracks
  • latin4 tracks
  • rap2 tracks
  • rock1 track
  • r&b1 track

What did each guest pick?

Guest 1 · 10 tracks
Track Artist Genre Party score
1 Te Vi Piso 21 latin 1.609
2 Con Calma Daddy Yankee pop 1.487
3 Roses - Imanbek Remix SAINt JHN pop 1.477
4 No Me Conoce - Remix Jhay Cortez pop 1.447
5 Hot (feat. Gunna) Young Thug rap 1.443
6 I Like It Cardi B pop 1.443
7 One Dance Drake pop 1.409
8 GANG GANG JACKBOYS rap 1.388
9 The Box Roddy Ricch rap 1.378
10 Higher Love Kygo pop 1.356
Guest 2 · 10 tracks
Track Artist Genre Party score
1 New Rules Dua Lipa pop 1.459
2 Take on Me a-ha pop 1.457
3 Hot (feat. Gunna) Young Thug rap 1.443
4 Shut Up and Dance WALK THE MOON pop 1.437
5 Highway to Hell AC/DC rock 1.427
6 Adore You Harry Styles pop 1.423
7 Nice To Meet Ya Niall Horan pop 1.420
8 Boy With Luv (feat. Halsey) BTS pop 1.415
9 One Dance Drake pop 1.409
10 GANG GANG JACKBOYS rap 1.388
Guest 3 · 10 tracks
Track Artist Genre Party score
1 New Rules Dua Lipa pop 1.459
2 No Me Conoce - Remix Jhay Cortez rap 1.440
3 Follow God Kanye West pop 1.429
4 Whine Up Nicky Jam latin 1.427
5 ZEZE Kodak Black pop 1.412
6 That's What I Like Bruno Mars pop 1.400
7 The Less I Know The Better Tame Impala rock 1.368
8 Murder On My Mind YNW Melly rap 1.344
9 2002 Anne-Marie pop 1.343
10 Peta (feat. Meek Mill) Roddy Ricch rap 1.336
Guest 4 · 10 tracks
Track Artist Genre Party score
1 Don't Start Now Dua Lipa pop 1.575
2 XO Tour Llif3 Lil Uzi Vert pop 1.479
3 Whine Up Nicky Jam latin 1.427
4 One Dance Drake pop 1.409
5 Wolves Selena Gomez pop 1.404
6 In My Feelings Drake pop 1.402
7 TOES (feat. Lil Baby & Moneybagg Yo) DaBaby rap 1.319
8 Blinding Lights The Weeknd pop 1.308
9 Maniac Conan Gray r&b 1.269
10 My Oh My (feat. DaBaby) Camila Cabello pop 1.197
Guest 5 · 10 tracks
Track Artist Genre Party score
1 Can't Hold Us - feat. Ray Dalton Macklemore & Ryan Lewis pop 1.534
2 Drip Too Hard (Lil Baby & Gunna) Lil Baby pop 1.474
3 Motivation Normani pop 1.467
4 Woah Lil Baby rap 1.466
5 New Rules Dua Lipa pop 1.459
6 Otro Trago - Remix Sech rap 1.444
7 Adore You Harry Styles pop 1.423
8 Camelot NLE Choppa rap 1.415
9 OUT WEST (feat. Young Thug) JACKBOYS rap 1.383
10 no tears left to cry Ariana Grande pop 1.372
Guest 6 · 10 tracks
Track Artist Genre Party score
1 Otro Trago - Remix Sech rap 1.444
2 Adore You Harry Styles pop 1.423
3 Nice To Meet Ya Niall Horan pop 1.420
4 BOP DaBaby rap 1.367
5 Ayy Macarena Tyga pop 1.313
6 Wake Me Up Avicii pop 1.311
7 Futsal Shuffle 2020 Lil Uzi Vert rap 1.305
8 FRIENDS Marshmello pop 1.301
9 Happier Marshmello pop 1.288
10 11 PM Maluma latin 1.272
Guest 7 · 10 tracks
Track Artist Genre Party score
1 Make No Sense YoungBoy Never Broke Again rap 1.588
2 Sucker Jonas Brothers pop 1.533
3 Motivation Normani pop 1.467
4 New Rules Dua Lipa pop 1.459
5 GANG GANG JACKBOYS rap 1.388
6 'Till I Collapse Eminem rap 1.333
7 South of the Border (feat. Camila Cabello & Cardi B) Ed Sheeran pop 1.330
8 Hate Me (with Juice WRLD) Ellie Goulding pop 1.317
9 Wake Me Up Avicii pop 1.311
10 Here With Me Marshmello pop 1.294
Guest 8 · 10 tracks
Track Artist Genre Party score
1 Baila Conmigo (feat. Kelly Ruiz) Dayvi latin 1.708
2 Believer Imagine Dragons latin 1.494
3 No Me Conoce - Remix Jhay Cortez pop 1.447
4 Follow God Kanye West pop 1.429
5 RITMO (Bad Boys For Life) The Black Eyed Peas pop 1.404
6 Piece Of Your Heart MEDUZA latin 1.381
7 Murder On My Mind YNW Melly rap 1.344
8 Hate Me (with Juice WRLD) Ellie Goulding pop 1.317
9 VIBEZ DaBaby rap 1.307
10 Tutu Camilo latin 1.290
Guest 9 · 10 tracks
Track Artist Genre Party score
1 Can't Hold Us - feat. Ray Dalton Macklemore & Ryan Lewis pop 1.534
2 Adore You Harry Styles pop 1.423
3 BOP DaBaby rap 1.367
4 Ransom Lil Tecca pop 1.367
5 Murder On My Mind YNW Melly rap 1.344
6 Indeciso Reik pop 1.304
7 Pumped Up Kicks Foster The People pop 1.298
8 Señorita Shawn Mendes pop 1.268
9 break up with your girlfriend, i'm bored Ariana Grande pop 1.238
10 Take What You Want (feat. Ozzy Osbourne & Travis Scott) Post Malone pop 1.208
Guest 10 · 10 tracks
Track Artist Genre Party score
1 Can't Hold Us - feat. Ray Dalton Macklemore & Ryan Lewis pop 1.534
2 I Like It Cardi B pop 1.443
3 Thunder Imagine Dragons pop 1.420
4 Wolves Selena Gomez pop 1.404
5 I Don't Care (with Justin Bieber) Ed Sheeran pop 1.382
6 Up All Night Khalid pop 1.376
7 The Less I Know The Better Tame Impala rock 1.368
8 MIA (feat. Drake) Bad Bunny rap 1.342
9 Ayy Macarena Tyga pop 1.313
10 VIBEZ DaBaby rap 1.307

10 guests → 100 picks → 73 unique candidates → 25 final tracks

What stands out at this party?

Most shared guest picks: QUE PRETENDES (J Balvin). Guest votes per track: 4. Switching scoring modes replaces 10 tracks in the final playlist.

Final playlist

Track Artist Genre Party score Mean similarity
1 Believer Imagine Dragons latin 1.494 0.979
2 I Like It Cardi B pop 1.443 0.978
3 Te Vi Piso 21 latin 1.609 0.978
4 Don't Start Now Dua Lipa pop 1.575 0.977
5 Quizas Rich Music LTD latin 1.516 0.977
6 One Kiss (with Dua Lipa) Calvin Harris pop 1.616 0.977
7 New Rules Dua Lipa pop 1.459 0.977
8 Sweet but Psycho Ava Max pop 1.354 0.976
9 Stressed Out Twenty One Pilots pop 1.325 0.976
10 RITMO (Bad Boys For Life) The Black Eyed Peas pop 1.404 0.976
11 So Am I Ava Max pop 1.264 0.976
12 Adicto (with Anuel AA & Ozuna) Tainy pop 1.553 0.975
13 No Me Conoce - Remix Jhay Cortez pop 1.447 0.975
14 One Thing Right Marshmello pop 1.215 0.975
15 Adore You Harry Styles pop 1.423 0.975
16 Adore You Harry Styles pop 1.423 0.975
17 Con Calma Daddy Yankee pop 1.487 0.974
18 El Favor (with Nicky Jam & Sech, feat. Farruko, Zion & Lunay) Dimelo Flow latin 1.281 0.973
19 Giant (with Rag'n'Bone Man) Calvin Harris pop 1.678 0.973
20 Up All Night Khalid pop 1.376 0.972
21 You Need To Calm Down Taylor Swift pop 1.433 0.971
22 Turn Me On (feat. Vula) Riton pop 1.550 0.970
23 Hot (feat. Gunna) Young Thug rap 1.443 0.970
24 Old Town Road - Remix Lil Nas X pop 1.444 0.969
25 HAD ENOUGH (feat. Quavo & Offset) Don Toliver rap 1.286 0.968

Genre breakdown

  • pop19 tracks
  • latin4 tracks
  • rap2 tracks

Final playlist

Track Artist Genre Party score Mean similarity
1 New Rules Dua Lipa pop 1.459 0.074
2 You Need To Calm Down Taylor Swift pop 1.433 0.062
3 Don't Start Now Dua Lipa pop 1.575 0.059
4 Sweet but Psycho Ava Max pop 1.354 0.053
5 Adore You Harry Styles pop 1.423 0.045
6 Adore You Harry Styles pop 1.423 0.045
7 Adicto (with Anuel AA & Ozuna) Tainy pop 1.553 0.043
8 HUMBLE. Kendrick Lamar pop 1.529 0.040
9 goosebumps Travis Scott pop 1.484 0.039
10 Turn Me On (feat. Vula) Riton pop 1.550 0.039
11 That's What I Like Bruno Mars pop 1.400 0.037
12 Giant (with Rag'n'Bone Man) Calvin Harris pop 1.678 0.036
13 RITMO (Bad Boys For Life) The Black Eyed Peas pop 1.404 0.036
14 Own It (feat. Ed Sheeran & Burna Boy) Stormzy latin 1.590 0.035
15 Old Town Road - Remix Lil Nas X pop 1.444 0.035
16 Te Vi Piso 21 latin 1.609 0.034
17 Believer Imagine Dragons latin 1.494 0.034
18 Señorita Shawn Mendes pop 1.262 0.033
19 Fuck Love (feat. Trippie Redd) XXXTENTACION rap 1.313 0.032
20 no tears left to cry Ariana Grande pop 1.372 0.029
21 So Am I Ava Max pop 1.264 0.027
22 One Kiss (with Dua Lipa) Calvin Harris pop 1.616 0.027
23 Sucker Jonas Brothers pop 1.533 0.027
24 DJ No Pare (feat. Zion, Dalex, Lenny Tavárez) - Remix Justin Quiles latin 1.407 0.026
25 In My Feelings Drake pop 1.402 0.019

Genre breakdown

  • pop20 tracks
  • latin4 tracks
  • rap1 track

What did each guest pick?

Guest 1 · 10 tracks
Track Artist Genre Party score
1 Drip Too Hard (Lil Baby & Gunna) Lil Baby pop 1.474
2 I Like It Cardi B pop 1.443
3 DJ No Pare (feat. Zion, Dalex, Lenny Tavárez) - Remix Justin Quiles latin 1.407
4 OUT WEST (feat. Young Thug) JACKBOYS rap 1.383
5 Don't Stop Me Now - 2011 Mix Queen rock 1.379
6 The Less I Know The Better Tame Impala rock 1.368
7 BOP DaBaby rap 1.367
8 Livin' On A Prayer Bon Jovi rock 1.341
9 South of the Border (feat. Camila Cabello & Cardi B) Ed Sheeran pop 1.330
10 Tutu Camilo latin 1.290
Guest 2 · 10 tracks
Track Artist Genre Party score
1 Que Calor (feat. J Balvin & El Alfa) Major Lazer pop 1.643
2 Make No Sense YoungBoy Never Broke Again rap 1.588
3 Ride It Regard pop 1.454
4 Hot (feat. Gunna) Young Thug rap 1.443
5 Shut Up and Dance WALK THE MOON pop 1.437
6 You Need To Calm Down Taylor Swift pop 1.433
7 In My Feelings Drake pop 1.402
8 OUT WEST (feat. Young Thug) JACKBOYS rap 1.383
9 Up All Night Khalid pop 1.376
10 no tears left to cry Ariana Grande pop 1.372
Guest 3 · 10 tracks
Track Artist Genre Party score
1 Te Vi Piso 21 latin 1.609
2 Sucker Jonas Brothers pop 1.533
3 Believer Imagine Dragons latin 1.494
4 Con Calma Daddy Yankee pop 1.487
5 Motivation Normani pop 1.467
6 New Rules Dua Lipa pop 1.459
7 RITMO (Bad Boys For Life) The Black Eyed Peas pop 1.404
8 QUE PRETENDES J Balvin rap 1.403
9 Sweet but Psycho Ava Max pop 1.354
10 Wake Me Up Avicii pop 1.311
Guest 4 · 10 tracks
Track Artist Genre Party score
1 Own It (feat. Ed Sheeran & Burna Boy) Stormzy latin 1.590
2 Adicto (with Anuel AA & Ozuna) Tainy pop 1.553
3 Follow God Kanye West pop 1.429
4 GANG GANG JACKBOYS rap 1.388
5 Dancin (feat. Luvli) - Krono Remix Aaron Smith pop 1.360
6 Livin' On A Prayer Bon Jovi rock 1.341
7 TOES (feat. Lil Baby & Moneybagg Yo) DaBaby rap 1.319
8 Fuck Love (feat. Trippie Redd) XXXTENTACION rap 1.313
9 Otro Trago Sech latin 1.311
10 So Am I Ava Max pop 1.264
Guest 5 · 10 tracks
Track Artist Genre Party score
1 Giant (with Rag'n'Bone Man) Calvin Harris pop 1.678
2 No Me Conoce - Remix Jhay Cortez pop 1.447
3 Youngblood 5 Seconds of Summer pop 1.433
4 Adore You Harry Styles pop 1.423
5 Adore You Harry Styles pop 1.423
6 QUE PRETENDES J Balvin rap 1.403
7 Livin' On A Prayer Bon Jovi rock 1.341
8 Wake Me Up Avicii pop 1.311
9 Tutu Camilo latin 1.290
10 HAD ENOUGH (feat. Quavo & Offset) Don Toliver rap 1.286
Guest 6 · 10 tracks
Track Artist Genre Party score
1 Own It (feat. Ed Sheeran & Burna Boy) Stormzy latin 1.590
2 Don't Start Now Dua Lipa pop 1.575
3 goosebumps Travis Scott pop 1.484
4 QUE PRETENDES J Balvin rap 1.403
5 Up All Night Khalid pop 1.376
6 Stressed Out Twenty One Pilots pop 1.325
7 El Favor (with Nicky Jam & Sech, feat. Farruko, Zion & Lunay) Dimelo Flow latin 1.281
8 Señorita Shawn Mendes pop 1.262
9 One Thing Right Marshmello pop 1.215
10 Life Is Good (feat. Drake) Future rap 1.214
Guest 7 · 10 tracks
Track Artist Genre Party score
1 Own It (feat. Ed Sheeran & Burna Boy) Stormzy latin 1.590
2 XO Tour Llif3 Lil Uzi Vert pop 1.479
3 Roses - Imanbek Remix SAINt JHN pop 1.477
4 Suge DaBaby rap 1.477
5 Follow God Kanye West pop 1.429
6 ZEZE Kodak Black pop 1.412
7 QUE PRETENDES J Balvin rap 1.403
8 BOP DaBaby rap 1.367
9 A Gente Fez Amor - Ao Vivo Gusttavo Lima edm 1.364
10 Dancin (feat. Luvli) - Krono Remix Aaron Smith pop 1.360
Guest 8 · 10 tracks
Track Artist Genre Party score
1 One Kiss (with Dua Lipa) Calvin Harris pop 1.616
2 Turn Me On (feat. Vula) Riton pop 1.550
3 Old Town Road - Remix Lil Nas X pop 1.444
4 Shut Up and Dance WALK THE MOON pop 1.437
5 Camelot NLE Choppa rap 1.415
6 That's What I Like Bruno Mars pop 1.400
7 Dancin (feat. Luvli) - Krono Remix Aaron Smith pop 1.360
8 Nonstop Drake latin 1.308
9 Blinding Lights The Weeknd pop 1.308
10 VIBEZ DaBaby rap 1.307
Guest 9 · 10 tracks
Track Artist Genre Party score
1 HUMBLE. Kendrick Lamar pop 1.529
2 Quizas Rich Music LTD latin 1.516
3 Suge DaBaby rap 1.477
4 Take on Me a-ha pop 1.457
5 Youngblood 5 Seconds of Summer pop 1.433
6 The Less I Know The Better Tame Impala rock 1.368
7 Wake Me Up Avicii pop 1.311
8 FRIENDS Marshmello pop 1.301
9 hot girl bummer blackbear pop 1.209
10 Perreo en La Luna Rich Music LTD latin 1.200
Guest 10 · 10 tracks
Track Artist Genre Party score
1 Que Calor (feat. J Balvin & El Alfa) Major Lazer pop 1.643
2 SICKO MODE Travis Scott pop 1.559
3 Sucker Jonas Brothers pop 1.533
4 Believer Imagine Dragons latin 1.494
5 Drip Too Hard (Lil Baby & Gunna) Lil Baby pop 1.474
6 Follow God Kanye West pop 1.429
7 Nice To Meet Ya Niall Horan pop 1.420
8 Camelot NLE Choppa rap 1.415
9 In the End Linkin Park rock 1.410
10 GANG GANG JACKBOYS rap 1.388
Explore the Python source · vibe.py
from pathlib import Path

import numpy as np
import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity
from sklearn.preprocessing import StandardScaler


FEATURES = ["danceability", "energy", "speechiness", "instrumentalness", "acousticness", "valence"]


def load_songs():
    columns = ["track_id", "track_name", "track_artist", "track_popularity",
               "playlist_name", "playlist_genre", *FEATURES]
    raw = pd.read_csv(Path(__file__).with_name("spotify_songs.csv"), usecols=columns)
    party = raw.playlist_name.str.contains("party", case=False, na=False)
    songs = raw.drop_duplicates("track_id").set_index("track_id")
    songs["in_party_playlist"] = party.groupby(raw.track_id).any()
    songs["party_score"] = songs.danceability + songs.energy - songs.acousticness
    return songs


def build_mix(songs, guests=10, songs_per_guest=25, top_n=10, seed=42, standardized=False):
    pool = songs.reset_index().sort_values(
        ["track_popularity", "track_id"], ascending=[False, True], kind="mergesort"
    ).head(300).set_index("track_id")
    rng = np.random.default_rng(seed)
    picks = {}
    for i in range(guests):
        sample = pool.sample(songs_per_guest, random_state=int(rng.integers(1_000_000)))
        picks[f"Guest {i + 1}"] = sample.nlargest(top_n, "party_score")

    candidates = pd.concat(picks.values())
    candidates = candidates.loc[~candidates.index.duplicated()].copy()
    candidates = score_candidates(candidates, standardized)
    return picks, candidates, candidates.nlargest(25, "mean_sim")


def score_candidates(candidates, standardized):
    candidates = candidates.copy()
    features = candidates[FEATURES]
    if standardized:
        features = StandardScaler().fit_transform(features)
    similarity = cosine_similarity(features)
    np.fill_diagonal(similarity, np.nan)
    candidates["mean_sim"] = np.nanmean(similarity, axis=1) if len(candidates) > 1 else np.nan
    return candidates