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)
Exemple #2
0
    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)
Exemple #3
0
    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)