def get_resistance_recommender(user_id): from recommender import algo from load_data import data,item_detail,item_list import random # building model on training data trainingSet = data.build_full_trainset() algo.fit(trainingSet) # generates predictions using trained model def rating_pred(user_id,item_list,algo): pred = {} for i in item_list: prediction = algo.predict(user_id, i) pred[i] = prediction.est return pred def generate_weights(user_id,item_list,algo): """generates a list of items based on their weights""" weighted_list = [] pred = rating_pred(user_id,item_list,algo) for i in pred.keys(): if pred[i] <0: # if the predicted rating is negative weighted_list += [i] elif pred[i] <0.9: # if the predicted rating < 0.9 weighted_list += 2 * [i] else: # if pred == 1 weighted_list += 3 * [i] return weighted_list def generate_recommendation(user_id,item_list,algo): weighted_l = generate_weights(user_id,item_list,algo) return random.choice(weighted_l) # make sure activity type returned correctly found = False while not found: activityId = str(generate_recommendation(user_id,item_list,algo)) if db.match_actvityType_by_id(activityId) =='Resistance exercise': found = True # formatting output data return_str = db.match_acticityName_by_id(activityId) return_dict = return_default.copy() return_dict['result'] = return_str return json.dumps(return_dict, ensure_ascii=False)
from recommender import algo from load_data import data, item_list import random # building model on training data trainingSet = data.build_full_trainset() algo.fit(trainingSet) def generate_weights(user_id, item_list, algo): """generates a list of items based on their weights""" # generates predictions def rating_pred(user_id, item_list, algo): pred = {} for i in item_list: prediction = algo.predict(user_id, i) pred[i] = prediction.est return pred # generates weights weighted_list = [] pred = rating_pred(user_id, item_list, algo) for i in pred.keys(): if pred[i] < 0: # if the predicted rating is negative weighted_list += [i] elif pred[i] < 0.9: # if the predicted rating < 0.9 weighted_list += 2 * [i] else: # if pred == 1 weighted_list += 3 * [i]