def run_cross_validation(): print "Collecting cross validations" strategies = ['mlbva', 'mlbva_eset', 'mlbow', 'mlbow_eset'] len_strategies = len(strategies) for index, strategy in enumerate(strategies): ml_cross_validation(LOG_PATH, strategy) print_progress_bar(index + 1, len_strategies)
def __init__(self, pkgs_list, axi, path): xapian.WritableDatabase.__init__(self, path, xapian.DB_CREATE_OR_OVERWRITE) self.sample = axi_search_pkgs(axi, pkgs_list) len_sample = len(self.sample) for index, package in enumerate(self.sample): self.doc_id = self.add_document(axi.get_document(package.docid)) print_progress_bar(index + 1, len_sample)
def get_packages_time(self, pkgs, verbose=False): pkgs_time = {} len_pkgs = len(pkgs) for index, pkg in enumerate(pkgs): modify, access = self.get_best_time(pkg) if modify and access: if verbose: print 'ADD: {}'.format(pkg) pkgs_time[pkg] = [] pkgs_time[pkg].append(modify) pkgs_time[pkg].append(access) else: if verbose: print 'NOT: {} {} {}'.format(pkg, modify, access) print_progress_bar(index + 1, len_pkgs) return pkgs_time
def collect_user_preferences(): Config().num_recommendations = 6 strategies = ['cb', 'cb_eset', 'cbtm', 'mlbva', 'mlbva_eset', 'mlbow', 'mlbow_eset'] recommendations = {} recommendations_time = [] print "Preparing recommendations..." len_strategies = len(strategies) for index, strategy in enumerate(strategies): first_time = int(round(time.time() * 1000)) recommendations[strategy] = get_pkgs_of_recommendation(strategy) last_time = int(round(time.time() * 1000)) recommendations_time.append("{0}: {1}".format(strategy, last_time - first_time)) print_progress_bar(index + 1, len_strategies) all_recommendations = set(sum(recommendations.values(), [])) all_recommendations = sorted(list(all_recommendations)) index = 0 user_preferences = {} all_rec_len = len(all_recommendations) message = "\n\nPackage [{0}/{1}] - {2} \n" message += "Description: {3}\n\n" message += "Rank a package recommendation with 1-4\n" message += "1 - Bad\n" message += "2 - Redundant\n" message += "3 - Useful\n" message += "4 - Useful Surprise\n\n" message += "exit - Cancel collect data\n\n" message += "Rank: " message_error = "\nPlease use digits 1-4 to rank a package: " apt_cache = AptCache() for i in range(len(all_recommendations)): pkg = all_recommendations[i] pkg_description = apt_cache[pkg].versions[0].description rank = -1 raw_message = message.format((index + 1), all_rec_len, pkg, pkg_description) clear_prints() print "\n\nCollecting user preferences" if i > 0: print "\n" for j in range(i): prev_pkg = all_recommendations[j] print( "[{0}/{1}] {2}, rank: {3}".format(j + 1, all_rec_len, prev_pkg, user_preferences[prev_pkg])) while rank < 1 or rank > 4: try: rank = raw_input(raw_message) if rank == 'exit': break rank = int(rank) except: rank = -2 raw_message = message_error if rank == 'exit': exit(2) user_preferences[pkg] = rank index += 1 preferences_list = ["{0}:{1}".format(package, user_preferences[package]) for package in all_recommendations] for rec_key, rec_value in recommendations.iteritems(): save_list(rec_value, RECOMMENDATION_PATH.format(rec_key)) save_list(preferences_list, USER_PREFERENCES) save_list(recommendations_time, RECOMMENDATIONS_TIME)