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") ...@@ -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 = song_ratings.pivot_table(index='user_id', columns='song_id', values='rating')
user_song_ratings.fillna(0, inplace=True) 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) song_similarity = cosine_similarity(user_song_ratings.T)
# Define a function to generate a playlist based on a user's wish list # Define a function to generate song recommendations for a user
def generate_playlist(wish_list, num_songs=10): def generate_song_recommendations(user_id, num_recommendations=10):
invalid_users = set(wish_list) - set(user_song_ratings.index) if user_id not in user_song_ratings.index:
if invalid_users: print(f"User ID {user_id} not found.")
print(f"Song IDs: {invalid_users}") return []
return None
user_ratings = user_song_ratings.loc[user_id].values
user_ratings = user_song_ratings.loc[wish_list].values song_scores = np.dot(user_ratings, song_similarity) / np.sum(np.abs(song_similarity), axis=1)
song_ratings_mean = user_song_ratings.mean(axis=0).values.reshape(1, -1) recommended_song_indices = np.argsort(-song_scores)[:num_recommendations]
user_ratings_centered = user_ratings - song_ratings_mean recommended_song_ids = user_song_ratings.columns[recommended_song_indices].tolist()
song_scores = np.dot(user_ratings_centered, song_similarity) / np.sum(np.abs(song_similarity), axis=0) return recommended_song_ids
top_song_indices = np.argsort(-song_scores)[:num_songs]
top_song_ids = user_song_ratings.columns[top_song_indices].tolist() # Example: Generate song recommendations for user 98549
return top_song_ids user_id = 98549
recommended_songs = generate_song_recommendations(user_id, num_recommendations=5)
wish_list = [3, 5] if recommended_songs:
playlist = generate_playlist(wish_list, num_songs=5) print(f"Recommended songs for user {user_id}:")
if playlist is not None: print(recommended_songs)
playlist_songs = song_ratings[song_ratings['song_id'].isin(playlist)]['song_id'] else:
print(playlist_songs) 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