Spaces:
Build error
Build error
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
|