deppfellow commited on
Commit
23ea55b
·
1 Parent(s): 31991cb

end commit. To restart the spaces

Browse files
Files changed (2) hide show
  1. app.py +32 -18
  2. func.py +12 -7
app.py CHANGED
@@ -4,19 +4,19 @@ from func import *
4
  from easeBased_model import *
5
  from contentBased_model import *
6
 
7
-
8
  if "user_preferences" not in st.session_state:
9
  st.session_state["user_preferences"] = {}
10
 
11
  data = pd.read_pickle("data/list_of_all_titles.pkl")
12
- ease_ids = list(
13
- pd.read_pickle("data/dict_of_ease_ids.pkl").keys())
 
14
 
15
 
16
  def games_recomm(preferences_id):
17
  if "rs" in st.session_state:
18
  del st.session_state["rs"]
19
-
20
  with st.spinner("Getting recommendation..."):
21
  pref_value = []
22
  for id in preferences_id:
@@ -24,7 +24,7 @@ def games_recomm(preferences_id):
24
  pref_value.append(1)
25
  elif st.session_state[id] == "Negative":
26
  pref_value.append(0)
27
-
28
  pred_df = pd.DataFrame({
29
  'user_id': [999999] * len(preferences_id),
30
  'app_id': preferences_id,
@@ -36,32 +36,44 @@ def games_recomm(preferences_id):
36
  try:
37
  res = cbf_model(pred_df=pred_df, k=10)['app_id'].tolist()
38
  except:
39
- st.error("Recommendation failed. Please select with at least 2 games title.")
 
40
  res = None
41
  else:
42
  res_cbf = cbf_model(pred_df=pred_df, k=100)
43
  res_ease = ease_model(pred_df=ease_df, k=100)
44
  res = combine_hybrid_result(res_ease, res_cbf)
45
 
 
 
 
 
 
 
 
 
46
  if type(res) == [ValueError, None]:
47
  st.error("Recommendation failed. Please select with at least 2 games title.")
48
-
49
  return
50
  else:
51
  st.session_state['rs'] = res
52
 
53
  try:
54
  if len(st.session_state['rs']) >= 1:
55
- st.success(f"Go to result page to view top {len(st.session_state['rs'])} recommendations.")
 
56
  else:
57
  st.error("Recommendation failed. Please reload the session.")
58
  except:
59
- st.error("There is some error in recommendation process. Please restart the session.")
 
60
 
61
  # st.write(res)
62
 
63
- # Main Page Header
64
- # Consist of Home page, Result page, About page, and Log page
 
65
  def spr_sidebar():
66
  menu = option_menu(
67
  menu_title=None,
@@ -80,7 +92,9 @@ def spr_sidebar():
80
  elif menu == 'About':
81
  st.session_state['app_mode'] = 'About'
82
 
83
- # Home page. One of the page in Main Header
 
 
84
  def home_page():
85
  st.title("Steam Recommendation System")
86
  with st.expander("Aturan input & panduan sistem"):
@@ -100,7 +114,7 @@ def home_page():
100
  """, unsafe_allow_html=True)
101
  st.markdown("<br>", unsafe_allow_html=True)
102
  st.image("data/systemGuide.png")
103
-
104
  st.markdown("<br>", unsafe_allow_html=True)
105
 
106
  if "user_preferences" in st.session_state:
@@ -122,12 +136,13 @@ def home_page():
122
 
123
  if state:
124
  st.session_state["user_preferences"] = user_input
125
-
126
  st.markdown("---")
127
  games_recomm(st.session_state["user_preferences"])
128
 
129
- # Result page
130
- # Show the list of predictions for active user
 
131
  def result_page():
132
  if "rs" not in st.session_state:
133
  st.error('Please input preferences titles and run "Get recommendation"')
@@ -136,8 +151,7 @@ def result_page():
136
 
137
  user_res = generate_res_gamebox(ids=st.session_state['rs'])
138
 
139
- # About page
140
- # Show the information of the project and the sites
141
 
142
 
143
  def about_page():
 
4
  from easeBased_model import *
5
  from contentBased_model import *
6
 
 
7
  if "user_preferences" not in st.session_state:
8
  st.session_state["user_preferences"] = {}
9
 
10
  data = pd.read_pickle("data/list_of_all_titles.pkl")
11
+ ease_ids = list(pd.read_pickle("data/dict_of_ease_ids.pkl").keys())
12
+
13
+ # Games recomm() to process user's input
14
 
15
 
16
  def games_recomm(preferences_id):
17
  if "rs" in st.session_state:
18
  del st.session_state["rs"]
19
+
20
  with st.spinner("Getting recommendation..."):
21
  pref_value = []
22
  for id in preferences_id:
 
24
  pref_value.append(1)
25
  elif st.session_state[id] == "Negative":
26
  pref_value.append(0)
27
+
28
  pred_df = pd.DataFrame({
29
  'user_id': [999999] * len(preferences_id),
30
  'app_id': preferences_id,
 
36
  try:
37
  res = cbf_model(pred_df=pred_df, k=10)['app_id'].tolist()
38
  except:
39
+ st.error(
40
+ "Recommendation failed. Please select with at least 2 games title.")
41
  res = None
42
  else:
43
  res_cbf = cbf_model(pred_df=pred_df, k=100)
44
  res_ease = ease_model(pred_df=ease_df, k=100)
45
  res = combine_hybrid_result(res_ease, res_cbf)
46
 
47
+ # st.write("EASE model output:", res_ease)
48
+ # st.markdown("---")
49
+ # st.write("CBF model output:", res_cbf)
50
+ # st.markdown("---")
51
+ # st.write("Hybrid model output:", res)
52
+
53
+ res = res.head(10).index.tolist()
54
+
55
  if type(res) == [ValueError, None]:
56
  st.error("Recommendation failed. Please select with at least 2 games title.")
57
+
58
  return
59
  else:
60
  st.session_state['rs'] = res
61
 
62
  try:
63
  if len(st.session_state['rs']) >= 1:
64
+ st.success(
65
+ f"Go to result page to view top {len(st.session_state['rs'])} recommendations.")
66
  else:
67
  st.error("Recommendation failed. Please reload the session.")
68
  except:
69
+ st.error(
70
+ "There is some error in recommendation process. Please restart the session.")
71
 
72
  # st.write(res)
73
 
74
+ # Main Page Header. Consist of Home page, Result page, About page, and Log page
75
+
76
+
77
  def spr_sidebar():
78
  menu = option_menu(
79
  menu_title=None,
 
92
  elif menu == 'About':
93
  st.session_state['app_mode'] = 'About'
94
 
95
+ # Home page. One of the page in Main Header for user inputting their preferences
96
+
97
+
98
  def home_page():
99
  st.title("Steam Recommendation System")
100
  with st.expander("Aturan input & panduan sistem"):
 
114
  """, unsafe_allow_html=True)
115
  st.markdown("<br>", unsafe_allow_html=True)
116
  st.image("data/systemGuide.png")
117
+
118
  st.markdown("<br>", unsafe_allow_html=True)
119
 
120
  if "user_preferences" in st.session_state:
 
136
 
137
  if state:
138
  st.session_state["user_preferences"] = user_input
139
+
140
  st.markdown("---")
141
  games_recomm(st.session_state["user_preferences"])
142
 
143
+ # Result page. Show the list of predictions for active user
144
+
145
+
146
  def result_page():
147
  if "rs" not in st.session_state:
148
  st.error('Please input preferences titles and run "Get recommendation"')
 
151
 
152
  user_res = generate_res_gamebox(ids=st.session_state['rs'])
153
 
154
+ # About page. Show the information of the project
 
155
 
156
 
157
  def about_page():
func.py CHANGED
@@ -8,12 +8,15 @@ from PIL import Image
8
  data_titles = pd.read_pickle("data/dict_of_all_titles.pkl")
9
  data_ids = pd.read_pickle("data/dict_of_all_ids.pkl")
10
 
 
11
  def ids_to_titles(ids_list):
12
  return [data_ids[title] for title in ids_list]
13
 
 
14
  def titles_to_ids(titles_list):
15
  return [data_titles[id] for id in titles_list]
16
 
 
17
  def generate_app_gamebox(titles):
18
  """
19
  Placeholder
@@ -35,9 +38,10 @@ def generate_app_gamebox(titles):
35
  options=["Positive", "Negative"],
36
  key=id,
37
  )
38
-
39
  return titles_id
40
 
 
41
  def generate_res_gamebox(ids):
42
  """
43
  Placeholder
@@ -53,17 +57,19 @@ def generate_res_gamebox(ids):
53
  st.image(BytesIO(resp.content))
54
  # st.caption(data_ids[id])
55
  st.caption(f"[{data_ids[id]}]({url_page})")
56
-
57
-
58
  st.divider()
59
 
 
60
  def combine_hybrid_result(res_ease, res_cbf):
61
  try:
62
  df = pd.concat([res_ease, res_cbf], axis=0)
63
 
64
- res_final = df.groupby("app_id").sum().sort_values(["predicted_score"], ascending=False)
65
-
66
- return res_final.head(10).index.tolist()
 
 
67
 
68
  except:
69
  st.error("Recommendation failed. Please select with at least 2 games title.")
@@ -71,4 +77,3 @@ def combine_hybrid_result(res_ease, res_cbf):
71
  # for title in titles_list:
72
  # # url = f"https://store.steampowered.com/app/"
73
  # with st.container():
74
-
 
8
  data_titles = pd.read_pickle("data/dict_of_all_titles.pkl")
9
  data_ids = pd.read_pickle("data/dict_of_all_ids.pkl")
10
 
11
+
12
  def ids_to_titles(ids_list):
13
  return [data_ids[title] for title in ids_list]
14
 
15
+
16
  def titles_to_ids(titles_list):
17
  return [data_titles[id] for id in titles_list]
18
 
19
+
20
  def generate_app_gamebox(titles):
21
  """
22
  Placeholder
 
38
  options=["Positive", "Negative"],
39
  key=id,
40
  )
41
+
42
  return titles_id
43
 
44
+
45
  def generate_res_gamebox(ids):
46
  """
47
  Placeholder
 
57
  st.image(BytesIO(resp.content))
58
  # st.caption(data_ids[id])
59
  st.caption(f"[{data_ids[id]}]({url_page})")
60
+
 
61
  st.divider()
62
 
63
+
64
  def combine_hybrid_result(res_ease, res_cbf):
65
  try:
66
  df = pd.concat([res_ease, res_cbf], axis=0)
67
 
68
+ res_final = df.groupby("app_id").sum().sort_values(
69
+ ["predicted_score"], ascending=False)
70
+
71
+ # return res_final.head(10).index.tolist()
72
+ return res_final
73
 
74
  except:
75
  st.error("Recommendation failed. Please select with at least 2 games title.")
 
77
  # for title in titles_list:
78
  # # url = f"https://store.steampowered.com/app/"
79
  # with st.container():