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