Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
TMP-23-105
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
K.Tharmikan
TMP-23-105
Commits
fd503541
Commit
fd503541
authored
Sep 06, 2023
by
M.A. Miqdad Ali Riza
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Replace Wishlist_create.py
parent
2ea81741
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
23 additions
and
22 deletions
+23
-22
Wishlist_create.py
Wishlist_create.py
+23
-22
No files found.
Wishlist_create.py
View file @
fd503541
...
@@ -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."
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment