Commit 7560608ff0ed29a55e057f4d76bfc9c86ea1d2cc
1 parent
d5b8b1c7
Exists in
master
and in
1 other branch
Added strategies tuning parameters to set_strategy method.
Showing
1 changed file
with
22 additions
and
16 deletions
Show diff stats
src/recommender.py
@@ -104,10 +104,18 @@ class Recommender: | @@ -104,10 +104,18 @@ class Recommender: | ||
104 | self.weight = xapian.TradWeight() | 104 | self.weight = xapian.TradWeight() |
105 | self.set_strategy(cfg.strategy) | 105 | self.set_strategy(cfg.strategy) |
106 | 106 | ||
107 | - def set_strategy(self,strategy_str): | 107 | + def set_strategy(self,strategy_str,k=0,n=0): |
108 | """ | 108 | """ |
109 | Set the recommendation strategy. | 109 | Set the recommendation strategy. |
110 | """ | 110 | """ |
111 | + if k: | ||
112 | + k_neighbors = k | ||
113 | + else: | ||
114 | + k_neighbors = self.cfg.k_neighbors | ||
115 | + if n: | ||
116 | + profile_size = n | ||
117 | + else: | ||
118 | + profile_size = self.cfg.profile_size | ||
111 | logging.info("Setting recommender strategy to \'%s\'" % strategy_str) | 119 | logging.info("Setting recommender strategy to \'%s\'" % strategy_str) |
112 | # Check if collaborative strategies can be instanciated | 120 | # Check if collaborative strategies can be instanciated |
113 | if "knn" in strategy_str: | 121 | if "knn" in strategy_str: |
@@ -126,33 +134,31 @@ class Recommender: | @@ -126,33 +134,31 @@ class Recommender: | ||
126 | # self.users_repository = self.popcon_programs | 134 | # self.users_repository = self.popcon_programs |
127 | # Set strategy based on strategy_str | 135 | # Set strategy based on strategy_str |
128 | if strategy_str == "cb": | 136 | if strategy_str == "cb": |
129 | - self.strategy = strategy.ContentBased("mix",self.cfg.profile_size) | 137 | + self.strategy = strategy.ContentBased("mix",profile_size) |
130 | elif strategy_str == "cbt": | 138 | elif strategy_str == "cbt": |
131 | - self.strategy = strategy.ContentBased("tag",self.cfg.profile_size) | 139 | + self.strategy = strategy.ContentBased("tag",profile_size) |
132 | elif strategy_str == "cbd": | 140 | elif strategy_str == "cbd": |
133 | - self.strategy = strategy.ContentBased("desc",self.cfg.profile_size) | 141 | + self.strategy = strategy.ContentBased("desc",profile_size) |
134 | elif strategy_str == "cbh": | 142 | elif strategy_str == "cbh": |
135 | - self.strategy = strategy.ContentBased("half",self.cfg.profile_size) | 143 | + self.strategy = strategy.ContentBased("half",profile_size) |
136 | if strategy_str == "cb_eset": | 144 | if strategy_str == "cb_eset": |
137 | - self.strategy = strategy.ContentBased("mix_eset",self.cfg.profile_size) | 145 | + self.strategy = strategy.ContentBased("mix_eset",profile_size) |
138 | elif strategy_str == "cbt_eset": | 146 | elif strategy_str == "cbt_eset": |
139 | - self.strategy = strategy.ContentBased("tag_eset",self.cfg.profile_size) | 147 | + self.strategy = strategy.ContentBased("tag_eset",profile_size) |
140 | elif strategy_str == "cbd_eset": | 148 | elif strategy_str == "cbd_eset": |
141 | - self.strategy = strategy.ContentBased("desc_eset",self.cfg.profile_size) | 149 | + self.strategy = strategy.ContentBased("desc_eset",profile_size) |
142 | elif strategy_str == "cbh_eset": | 150 | elif strategy_str == "cbh_eset": |
143 | - self.strategy = strategy.ContentBased("half_eset",self.cfg.profile_size) | ||
144 | - #elif strategy_str == "col": | ||
145 | - # self.strategy = strategy.CollaborativeEset() | 151 | + self.strategy = strategy.ContentBased("half_eset",profile_size) |
146 | elif strategy_str == "knn": | 152 | elif strategy_str == "knn": |
147 | - self.strategy = strategy.Knn(self.cfg.k_neighbors) | 153 | + self.strategy = strategy.Knn(k_neighbors) |
148 | elif strategy_str == "knn_plus": | 154 | elif strategy_str == "knn_plus": |
149 | - self.strategy = strategy.KnnPlus(self.cfg.k_neighbors) | 155 | + self.strategy = strategy.KnnPlus(k_neighbors) |
150 | elif strategy_str == "knn_eset": | 156 | elif strategy_str == "knn_eset": |
151 | - self.strategy = strategy.KnnEset(self.cfg.k_neighbors) | 157 | + self.strategy = strategy.KnnEset(k_neighbors) |
152 | elif strategy_str == "knnco": | 158 | elif strategy_str == "knnco": |
153 | - self.strategy = strategy.KnnContent(self.cfg.k_neighbors) | 159 | + self.strategy = strategy.KnnContent(k_neighbors) |
154 | elif strategy_str == "knnco_eset": | 160 | elif strategy_str == "knnco_eset": |
155 | - self.strategy = strategy.KnnContentEset(self.cfg.k_neighbors) | 161 | + self.strategy = strategy.KnnContentEset(k_neighbors) |
156 | # [FIXME: fix repository instanciation] | 162 | # [FIXME: fix repository instanciation] |
157 | #elif strategy_str.startswith("demo"): | 163 | #elif strategy_str.startswith("demo"): |
158 | # self.strategy = strategy.Demographic(strategy_str) | 164 | # self.strategy = strategy.Demographic(strategy_str) |