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()
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()
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()
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()
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"