def get_similar_users(self, user, user_list, item_list, min_value=MIN_SIMILARITY_VALUE): user_item_matrix = self.create_matrix(user_list, item_list) sim_list = [] for other in user_list: if user==other:continue try: sim=utils.distance_matrix_p1_p2(user_item_matrix[user.id],user_item_matrix[other.id]) #returns a 0..1 value except KeyError: user_item_matrix = self.create_matrix(user_list, item_list, bust_cache=True) sim=utils.distance_matrix_p1_p2(user_item_matrix[user.id],user_item_matrix[other.id]) #returns a 0..1 value if sim>min_value: sim_list.append((sim,other)) sim_list.sort(reverse=True) return sim_list
def get_similar_items(self, item, user_list, item_list, min_value=MIN_SIMILARITY_VALUE): user_item_matrix = self.create_matrix(user_list, item_list) item_user_matrix = self.rotate_matrix(user_item_matrix) sim_list = [] for other in item_list: if item==other:continue try: sim=utils.distance_matrix_p1_p2(item_user_matrix[item.id],item_user_matrix[other.id]) #returns a 0..1 value except KeyError: sim=0 if sim>min_value: sim_list.append((sim,other)) sim_list.sort(reverse=True) return sim_list