Exemple #1
0
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]