Spaces:
Sleeping
Sleeping
Commit
·
39bb071
1
Parent(s):
1c645c1
Change used params
Browse files- app.py +3 -23
- contentBased_model.py +2 -2
- easeBased_model.py +3 -4
- func.py +1 -1
- requirements.txt +5 -5
app.py
CHANGED
@@ -5,16 +5,9 @@ from easeBased_model import *
|
|
5 |
from contentBased_model import *
|
6 |
|
7 |
|
8 |
-
|
9 |
if "user_preferences" not in st.session_state:
|
10 |
st.session_state["user_preferences"] = {}
|
11 |
|
12 |
-
# if "user_titles" not in st.session_state:
|
13 |
-
# st.session_state["user_titles"] = []
|
14 |
-
|
15 |
-
# if "26k_titles" not in st.session_state:
|
16 |
-
# st.session_state['26k_titles'] = data
|
17 |
-
|
18 |
data = pd.read_pickle("data/list_of_all_titles.pkl")
|
19 |
ease_ids = list(
|
20 |
pd.read_pickle("data/dict_of_ease_ids.pkl").keys())
|
@@ -40,26 +33,14 @@ def games_recomm(preferences_id):
|
|
40 |
ease_df = pred_df[pred_df['app_id'].isin(ease_ids)]
|
41 |
|
42 |
if ease_df.empty:
|
43 |
-
res = cbf_model(pred_df=pred_df, k=
|
44 |
else:
|
45 |
res_cbf = cbf_model(pred_df=pred_df, k=100)
|
46 |
res_ease = ease_model(pred_df=ease_df, k=100)
|
47 |
res = combine_hybrid_result(res_ease, res_cbf)
|
48 |
-
|
49 |
-
# st.write(res)
|
50 |
-
# st.write("Result of EASE:")
|
51 |
-
# st.write(res_ease)
|
52 |
-
# st.markdown("<br>", unsafe_allow_html=True)
|
53 |
-
|
54 |
-
# st.write("Result of CBF:")
|
55 |
-
# st.write(res_cbf)
|
56 |
-
# st.markdown("<br>", unsafe_allow_html=True)
|
57 |
-
|
58 |
-
# st.write("Result of Hybrid:")
|
59 |
-
# st.write(res)
|
60 |
|
61 |
if type(res) == ValueError:
|
62 |
-
st.error("Recommendation failed. Please select with at least
|
63 |
|
64 |
return
|
65 |
else:
|
@@ -102,7 +83,7 @@ def home_page():
|
|
102 |
st.markdown("""
|
103 |
Mohon untuk memasukkan input yang valid, yaitu:
|
104 |
|
105 |
-
- Minimal
|
106 |
- Preferensi penilaian game yang dimasukkan harus memiliki setidaknya 1 rating positif
|
107 |
|
108 |
<br>
|
@@ -148,7 +129,6 @@ def result_page():
|
|
148 |
st.error('Please input preferences titles and run "Get recommendation"')
|
149 |
else:
|
150 |
st.success(f'Top {len(st.session_state["rs"])}')
|
151 |
-
# st.session_state
|
152 |
|
153 |
user_res = generate_res_gamebox(ids=st.session_state['rs'])
|
154 |
|
|
|
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())
|
|
|
33 |
ease_df = pred_df[pred_df['app_id'].isin(ease_ids)]
|
34 |
|
35 |
if ease_df.empty:
|
36 |
+
res = cbf_model(pred_df=pred_df, k=10)['app_id'].tolist()
|
37 |
else:
|
38 |
res_cbf = cbf_model(pred_df=pred_df, k=100)
|
39 |
res_ease = ease_model(pred_df=ease_df, k=100)
|
40 |
res = combine_hybrid_result(res_ease, res_cbf)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
|
42 |
if type(res) == ValueError:
|
43 |
+
st.error("Recommendation failed. Please select with at least 2 games title.")
|
44 |
|
45 |
return
|
46 |
else:
|
|
|
83 |
st.markdown("""
|
84 |
Mohon untuk memasukkan input yang valid, yaitu:
|
85 |
|
86 |
+
- Minimal 2 judul game yang dimasukkan sebagai input sistem
|
87 |
- Preferensi penilaian game yang dimasukkan harus memiliki setidaknya 1 rating positif
|
88 |
|
89 |
<br>
|
|
|
129 |
st.error('Please input preferences titles and run "Get recommendation"')
|
130 |
else:
|
131 |
st.success(f'Top {len(st.session_state["rs"])}')
|
|
|
132 |
|
133 |
user_res = generate_res_gamebox(ids=st.session_state['rs'])
|
134 |
|
contentBased_model.py
CHANGED
@@ -9,7 +9,7 @@ class KnnCBF:
|
|
9 |
user_col='user_id',
|
10 |
item_col='app_id',
|
11 |
score_col='is_recommended',
|
12 |
-
nearest_k=
|
13 |
metric="cosine"):
|
14 |
"""
|
15 |
Args:
|
@@ -59,7 +59,7 @@ class KnnCBF:
|
|
59 |
|
60 |
def predict_active(self, pred_df,
|
61 |
k=10,
|
62 |
-
weight_hybrid=.
|
63 |
hybrid_model=True):
|
64 |
|
65 |
act_df = pred_df.merge(self.item_lookup, on=[self.item_col], sort=False)
|
|
|
9 |
user_col='user_id',
|
10 |
item_col='app_id',
|
11 |
score_col='is_recommended',
|
12 |
+
nearest_k=2,
|
13 |
metric="cosine"):
|
14 |
"""
|
15 |
Args:
|
|
|
59 |
|
60 |
def predict_active(self, pred_df,
|
61 |
k=10,
|
62 |
+
weight_hybrid=.2,
|
63 |
hybrid_model=True):
|
64 |
|
65 |
act_df = pred_df.merge(self.item_lookup, on=[self.item_col], sort=False)
|
easeBased_model.py
CHANGED
@@ -8,7 +8,7 @@ class EASE:
|
|
8 |
user_col='user_id',
|
9 |
item_col='app_id',
|
10 |
score_col='is_recommended',
|
11 |
-
reg=
|
12 |
"""
|
13 |
train: (DataFrame) data of training set
|
14 |
user_col: (String) column name of users column
|
@@ -52,7 +52,7 @@ class EASE:
|
|
52 |
def predict_active(self, pred_df,
|
53 |
weight_mx,
|
54 |
k=10,
|
55 |
-
weight_lambda=0.
|
56 |
hybrid_model=True,
|
57 |
remove_owned=True):
|
58 |
"""
|
@@ -111,8 +111,7 @@ class EASE:
|
|
111 |
'app_id' : escaped_id,
|
112 |
'predicted_score' : escaped_score
|
113 |
})
|
114 |
-
|
115 |
-
|
116 |
return pred_result
|
117 |
|
118 |
def ease_model(pred_df, k=10):
|
|
|
8 |
user_col='user_id',
|
9 |
item_col='app_id',
|
10 |
score_col='is_recommended',
|
11 |
+
reg=150.):
|
12 |
"""
|
13 |
train: (DataFrame) data of training set
|
14 |
user_col: (String) column name of users column
|
|
|
52 |
def predict_active(self, pred_df,
|
53 |
weight_mx,
|
54 |
k=10,
|
55 |
+
weight_lambda=0.8,
|
56 |
hybrid_model=True,
|
57 |
remove_owned=True):
|
58 |
"""
|
|
|
111 |
'app_id' : escaped_id,
|
112 |
'predicted_score' : escaped_score
|
113 |
})
|
114 |
+
|
|
|
115 |
return pred_result
|
116 |
|
117 |
def ease_model(pred_df, k=10):
|
func.py
CHANGED
@@ -66,7 +66,7 @@ def combine_hybrid_result(res_ease, res_cbf):
|
|
66 |
return res_final.head(10).index.tolist()
|
67 |
|
68 |
except:
|
69 |
-
st.error("Recommendation failed. Please select with at least
|
70 |
|
71 |
# for title in titles_list:
|
72 |
# # url = f"https://store.steampowered.com/app/"
|
|
|
66 |
return res_final.head(10).index.tolist()
|
67 |
|
68 |
except:
|
69 |
+
st.error("Recommendation failed. Please select with at least 2 games title.")
|
70 |
|
71 |
# for title in titles_list:
|
72 |
# # url = f"https://store.steampowered.com/app/"
|
requirements.txt
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
-
pandas
|
2 |
-
torch
|
3 |
-
scikit-learn
|
4 |
-
requests
|
5 |
-
streamlit
|
6 |
streamlit_option_menu
|
|
|
1 |
+
pandas==2.1.1
|
2 |
+
torch==2.1.0+cpu
|
3 |
+
scikit-learn==1.3.1
|
4 |
+
requests==2.31.0
|
5 |
+
streamlit==1.27.1
|
6 |
streamlit_option_menu
|