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

Replace Wishlist_create.py

parent 2ea81741
......@@ -9,27 +9,28 @@ song_ratings = pd.read_csv("song_ratings.csv")
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
# Calculate the cosine similarity between songs
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)
# Define a function to generate song recommendations for a user
def generate_song_recommendations(user_id, num_recommendations=10):
if user_id not in user_song_ratings.index:
print(f"User ID {user_id} not found.")
return []
user_ratings = user_song_ratings.loc[user_id].values
song_scores = np.dot(user_ratings, song_similarity) / np.sum(np.abs(song_similarity), axis=1)
recommended_song_indices = np.argsort(-song_scores)[:num_recommendations]
recommended_song_ids = user_song_ratings.columns[recommended_song_indices].tolist()
return recommended_song_ids
# Example: Generate song recommendations for user 98549
user_id = 98549
recommended_songs = generate_song_recommendations(user_id, num_recommendations=5)
if recommended_songs:
print(f"Recommended songs for user {user_id}:")
print(recommended_songs)
else:
print("No recommendations available for this user.")
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