Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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 |
-
#
|
7 |
-
data = {
|
8 |
-
|
9 |
-
|
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.
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
|
|
|
|
|
|
|
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)
|