awacke1 commited on
Commit
2f2356b
β€’
1 Parent(s): 60134d6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -13
app.py CHANGED
@@ -2,12 +2,14 @@ import streamlit as st
2
  from surprise import Dataset, Reader, SVD
3
  from surprise.model_selection import train_test_split
4
  import pandas as pd
 
5
 
6
- # Sample user-item rating data for collaborative filtering
7
- data = {'user_id': [1, 1, 1, 2, 2, 3, 3, 4, 4],
8
- 'item_id': [1, 2, 3, 1, 4, 2, 3, 1, 4],
9
- 'rating': [5, 3, 4, 4, 5, 5, 2, 4, 4]}
10
-
 
11
  df = pd.DataFrame(data)
12
  reader = Reader(rating_scale=(1, 5))
13
  dataset = Dataset.load_from_df(df[['user_id', 'item_id', 'rating']], reader)
@@ -16,6 +18,13 @@ trainset, testset = train_test_split(dataset, test_size=0.25)
16
  algo = SVD()
17
  algo.fit(trainset)
18
 
 
 
 
 
 
 
 
19
  # UI Elements
20
  st.title("🌟 Personalized Entertainment Recommendations")
21
 
@@ -53,11 +62,14 @@ predicted_ratings.sort(key=lambda x: x[1], reverse=True)
53
  st.subheader("🎯 Recommendations for you:")
54
  for item_id, rating in predicted_ratings:
55
  for rec in recommendations[item_id]:
56
- st.write(f"{rec} - Predicted Rating: {rating:.2f} ⭐")
57
-
58
- # Provide visual feedback for actions
59
- if predicted_ratings:
60
- st.button("πŸ‘ Like", key="like_button")
61
- st.button("πŸ‘Ž Dislike", key="dislike_button")
62
- else:
63
- st.write("No recommendations available for your selected genre.")
 
 
 
 
2
  from surprise import Dataset, Reader, SVD
3
  from surprise.model_selection import train_test_split
4
  import pandas as pd
5
+ import numpy as np
6
 
7
+ # Initialize sample user-item rating data
8
+ data = {
9
+ 'user_id': [1, 1, 1, 2, 2, 3, 3, 4, 4],
10
+ 'item_id': [1, 2, 3, 1, 4, 2, 3, 1, 4],
11
+ 'rating': [5, 3, 4, 4, 5, 5, 2, 4, 4]
12
+ }
13
  df = pd.DataFrame(data)
14
  reader = Reader(rating_scale=(1, 5))
15
  dataset = Dataset.load_from_df(df[['user_id', 'item_id', 'rating']], reader)
 
18
  algo = SVD()
19
  algo.fit(trainset)
20
 
21
+ # Initialize session state for storing user ratings
22
+ if 'user_ratings' not in st.session_state:
23
+ st.session_state.user_ratings = {1: [], 2: [], 3: [], 4: []}
24
+
25
+ def update_ratings(item_id, rating):
26
+ st.session_state.user_ratings[item_id].append(rating)
27
+
28
  # UI Elements
29
  st.title("🌟 Personalized Entertainment Recommendations")
30
 
 
62
  st.subheader("🎯 Recommendations for you:")
63
  for item_id, rating in predicted_ratings:
64
  for rec in recommendations[item_id]:
65
+ avg_score = np.mean(st.session_state.user_ratings[item_id]) if st.session_state.user_ratings[item_id] else rating
66
+ st.write(f"{rec} - Average Score: {avg_score:.2f} ⭐")
67
+
68
+ # Rating buttons from 1 to 10
69
+ user_rating = st.slider(f"Rate {rec}", 1, 10, 5, key=f"slider_{rec}")
70
+ if st.button(f"Submit Rating for {rec}", key=f"button_{rec}"):
71
+ update_ratings(item_id, user_rating)
72
+ st.write(f"Submitted Rating: {user_rating}")
73
+
74
+ # Display current session state (for debugging purposes)
75
+ st.write("Session State (User Ratings):", st.session_state.user_ratings)