예제 #1
0
def merge_users(db_conn_conf, group_user_id, ratings, merge_fun):
    """Merge users using given strategy (merge function)
    """
    individual_ratings = merge(ratings, merge_fun)
    db_conn = RSDBConnection(db_conn_conf)
    db_conn.insert_user_ratings(group_user_id, individual_ratings)
    db_conn.finalize()
예제 #2
0
def merge_user_avg(user_id, ratings):
    """For each game get average from users' from group rating
    """
    rsdbc = RSDBConnection()
    individual_ratings = {}
    for game_id, game_ratings in ratings.iteritems():
        ratings = [game_ratings[i] for i in game_ratings]
        avg_rating = sum(ratings)/len(ratings)
        individual_ratings[game_id] = avg_rating
    print individual_ratings
    rsdbc.insert_user_ratings(user_id, individual_ratings)
    rsdbc.finalize()
예제 #3
0
def merge_user_max(user_id, ratings):
    """For each game get maximum from users' from group rating
    """
    rsdbc = RSDBConnection()
    individual_ratings = {}
    for game_id, game_ratings in ratings.iteritems():
        user_id_max_rating = max(game_ratings.iteritems(), key=operator.itemgetter(1))[0]
        max_rating = game_ratings[user_id_max_rating]
        individual_ratings[game_id] = max_rating
    print individual_ratings
    rsdbc.insert_user_ratings(user_id, individual_ratings)
    rsdbc.finalize()
예제 #4
0
def add_new_user():
    """ Add new user to database
    """
    rsdbc = RSDBConnection()
    user = raw_input("What's your name? ")
    user_id = rsdbc.add_user(user)
    while not user_id:
        user = raw_input(
            "This name isn't available. Choose another one: ")
        user_id = rsdbc.add_user(user)
    ratings = collect_user_ratings(rsdbc, user_id)
    rsdbc.insert_user_ratings(user_id, ratings)
    rsdbc.finalize()
예제 #5
0
def main():
    """Do the stuff
    """
    menu = {}
    menu['5'] = 'Add new user'
    menu['1'] = 'Add ratings for games'
    menu['2'] = 'Generate individual recommendation'
    menu['3'] = 'Generate group recommendation'
    menu['4'] = 'Show me my ratings'
    menu['0'] = 'Quit'

    while True:
        options = menu.keys()
        options.sort()
        for entry in options:
            print entry, menu[entry]

        selection = raw_input("Please select: ")
        if selection == '5':
            add_new_user()
        elif selection == '1':
            user_id, ratings = get_user_ratings_for_game()

            rsdbc = RSDBConnection()
            rsdbc.insert_user_ratings(user_id, ratings)
            rsdbc.finalize()

        elif selection == '2':
            user_name = raw_input("Give user name for counting recommendation: ")
            recommendation = read_recommendation_from_file(user_name)

            rsdbc = RSDBConnection()
            for game_id, prob in recommendation[:50]:
                 game = rsdbc.get_game_name(game_id)
                 print '{:.3f}\t{}'.format(prob, game)
            rsdbc.finalize()

        elif selection == '3':
            make_group_recommendation()
        elif selection == '4':
            show_user_ratings()
        elif selection == '0':
            print '\n\nBye!'
            break
        else:
            print "Unknown option selected!\n"