예제 #1
0
def gen_and_print_recommendation(db_conn_conf, group_name, numplayers):
    """Function for generating and printing recommendation
    """
    recommendation = read_recommendation_from_file(db_conn_conf, group_name)
    with open("recommendations/" + group_name + "_result", "w") as save_file:
        for game_id, prob in recommendation:
            if check_numplayers(db_conn_conf, numplayers, game_id):
                rsdbc = RSDBConnection()
                game = rsdbc.get_game_name(game_id)
                rsdbc.finalize()
                save_file.write("{};{}\n".format(prob, game))
    return recommendation
예제 #2
0
def show_user_ratings():
    """Show ratings for a given user
    """
    rsdbc = RSDBConnection()
    user_name = raw_input("Please enter your username\n")
    user_id = rsdbc.get_user_id(user_name)
    ratings = rsdbc.get_user_ratings(user_id)
    print '\n\nrating\t\t game'
    for elem in ratings:
        game_name = rsdbc.get_game_name(elem[0])
        print '{1}\t\t {0}'.format(game_name, elem[1])
    print "\n\n"
    rsdbc.finalize()
예제 #3
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"
예제 #4
0
def generate_and_print_recommendation(group_name, numplayers):
    """Function for generating and printing recommendation
    """
    print "\nI'M RECOMMENDING\n"
    recommendation = read_recommendation_from_file(group_name)
    print 'mam rekomendacje\n\n'
    with open('recommendations/'+group_name + '_result', 'w') as save_file:
        for game_id, prob in recommendation:
            print 'jestem w forze\n numplayers '
            print numplayers
            if check_numplayers(numplayers, game_id):
                print 'sprawdzam numplayers \n'
                rsdbc = RSDBConnection()
                game = rsdbc.get_game_name(game_id)
                rsdbc.finalize()
                print '{:.3f}\t{}'.format(prob, game)
                save_file.write('{} ;{}\n'.format(prob, game))
예제 #5
0
def merge_rec_avg(ratings):
    """For each game get average from users' from group rating
    """
    individual_ratings = {}
    group_name = ''
    for game_id, game_ratings in ratings.iteritems():
        ratings = [game_ratings[i] for i in game_ratings]
        group_name = "_".join(game_ratings.keys())
        avg_rating = sum(ratings)/len(ratings)
        individual_ratings[game_id] = avg_rating
    sorted_recommendations = sorted(individual_ratings.items(), key=operator.itemgetter(1), reverse=True)
    print sorted_recommendations
    with open('recommendations/'+group_name+'_avg', 'w') as save_file:
        rsdbc = RSDBConnection()
        for game_id, recommendation in sorted_recommendations:
            game_name = rsdbc.get_game_name(game_id)
            save_file.write('{};{}\n'.format(recommendation, game_name))
        rsdbc.finalize()
예제 #6
0
def merge_rec_max(ratings):
    """For each game get maximum from users' from group rating
    """
    individual_ratings = {}
    group_name = ''
    for game_id, game_ratings in ratings.iteritems():
        user_id_max_rating = max(game_ratings.iteritems(), key=operator.itemgetter(1))[0]
        group_name = "_".join(game_ratings.keys())
        max_rating = game_ratings[user_id_max_rating]
        individual_ratings[game_id] = max_rating
    sorted_recommendations = sorted(individual_ratings.items(), key=operator.itemgetter(1), reverse=True)
    print sorted_recommendations
    with open('recommendations/'+group_name+'_max', 'w') as save_file:
        rsdbc = RSDBConnection()
        for game_id, recommendation in sorted_recommendations:
            game_name = rsdbc.get_game_name(game_id)
            save_file.write('{};{}\n'.format(recommendation, game_name))
        rsdbc.finalize()