Commit 2ea81741 authored by M.A. Miqdad Ali Riza's avatar M.A. Miqdad Ali Riza

Upload New File

parent 4137645a
import pandas as pd
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
# Load the song data
song_ratings = pd.read_csv("song_ratings.csv")
# Create a user-song matrix
user_song_ratings = song_ratings.pivot_table(index='user_id', columns='song_id', values='rating')
user_song_ratings.fillna(0, inplace=True)
# Calculate the cosine similarity
song_similarity = cosine_similarity(user_song_ratings.T)
# Define a function to generate a playlist based on a user's wish list
def generate_playlist(wish_list, num_songs=10):
invalid_users = set(wish_list) - set(user_song_ratings.index)
if invalid_users:
print(f"Song IDs: {invalid_users}")
return None
user_ratings = user_song_ratings.loc[wish_list].values
song_ratings_mean = user_song_ratings.mean(axis=0).values.reshape(1, -1)
user_ratings_centered = user_ratings - song_ratings_mean
song_scores = np.dot(user_ratings_centered, song_similarity) / np.sum(np.abs(song_similarity), axis=0)
top_song_indices = np.argsort(-song_scores)[:num_songs]
top_song_ids = user_song_ratings.columns[top_song_indices].tolist()
return top_song_ids
wish_list = [3, 5]
playlist = generate_playlist(wish_list, num_songs=5)
if playlist is not None:
playlist_songs = song_ratings[song_ratings['song_id'].isin(playlist)]['song_id']
print(playlist_songs)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment