Exemplo n.º 1
0
def main():
    args = p.parse_args()
    confidence = float(args.confidence)
    support = float(args.support)
    max_length = int(args.max_length)
    print("Apriori (support=%.3f, confidence=%.3f, max_length=%d)" %
          (support, confidence, max_length))

    gitpy = git.Git(CLONE_PATH)

    # fetching repository / folder
    project_path = args.dir
    if args.repository:
        project_folder = "clone-%s" % generate_hash()
        project_path = "%s/%s" % (CLONE_PATH, project_folder)
        print("Cloning repository to %s..." % project_path)
        gitpy.clone(args.repository, project_folder)

    print("number of commits: %d" % (get_commit_count(project_path)))
    print("support absolute value: %d" %
          (support * get_commit_count(project_path)))

    # defining language parser
    parser = BaseParser
    if args.lang == "go":
        parser = GoParser
    elif args.lang == "java":
        parser = JavaParser
    elif args.lang == "python":
        parser = PythonParser

    print("parsing project...")

    function_changes = []
    for commit in RepositoryMining(project_path).traverse_commits():
        language_parser = parser(project_path, commit.hash)
        changes = language_parser.get_diff()
        if changes:
            function_changes.append(changes)

    print("Transactions:")
    for changes in function_changes:
        print(changes)

    print("analyzing transactions...")

    apriori = Apriori(function_changes,
                      confidence=float(confidence),
                      support=float(support),
                      max_length=int(max_length))
    rules = apriori.get_rules()

    print("Association rules:")
    for rule in rules:
        print(rule)
Exemplo n.º 2
0
    guessingGame = True
    if left_circle or right_circle :
        client.leave_store()
        if (client.x, client.y) == (280, 600):
            left_circle = False
            right_circle = False
            guessingGame = False
            client = None  # to generate a new client and set a new path for him
            num_transaction += 1
            is_drawn = False
            score_is_calculated = False
            client = Client()

client = Client()
apriori = Apriori()
antecedents, consequents = apriori.get_rules()
known_transactions = apriori.get_known_transactions()
unknown_transactions = [
('milk','chocolate','croissant'),
('burger','pizza','icecream'),
('soda','icecream','pistachio'),
('chocolate','pistachio','honey'),
('shrimp','fish','sweets'),
('mushroom','medicine'),
('cheese','chicken','fruits','meat'),
('icecream','burger','pizza'),
('milk','biscuit','egg'),
('shrimp','sweets','fish'),
('honey','chocolate','pistachio'),
('medicine','mushroom'),
('burger','pizza','icecream'),
Exemplo n.º 3
0
first_window = First_window()
known_transactions, unknown_transactions = [], []
first_window.begin(screen, known_transactions, unknown_transactions)

# Initialization of variables :
client = None
mainMenu, startingGame, shopping, guessingGame, gameFinished = True, False, False, False, False
transactionsList = []
knownTransactionsIndex, TRANSACTIONS_PER_PAGE, num_transaction = 0, 5, 0
objects= []
# reading data from the objects.txt
with open('objects.txt') as f:
    objects = [line.rstrip('\n') for line in f]
client = Client()
apriori = Apriori(known_transactions)
antecedents, consequents = apriori.get_rules() # Rules building

# main loop
run = True
while run:
    clock.tick(30)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
        elif event.type == pygame.MOUSEBUTTONUP:
            if guessingGame == True :
                pos = pygame.mouse.get_pos()
                # check if the player has clicked on the right circle
                if((pos[0] - 454)**2 + (pos[1] - 441)**2 < 93**2):
                    Draw_choice.right_circle = True
                # check if the player has clicked on the left circle
Exemplo n.º 4
0
def main():
    args = p.parse_args()
    confidence = float(args.confidence)
    support = float(args.support)
    max_length = int(args.max_length)
    transactions_file_name = args.transactions
    max_commits = args.max_commits

    print("support=%.3f" % support)
    print("confidence=%.3f" % confidence)
    print("max_length=%d" % max_length)
    if max_commits:
        print("max_commits=%d" % int(max_commits))

    transactions = []

    if transactions_file_name is None:
        gitpy = git.Git(CLONE_PATH)

        # fetching repository / folder
        project_path = args.dir
        if args.repository:
            project_folder = "clone-%s" % generate_hash()
            project_path = "%s/%s" % (CLONE_PATH, project_folder)
            print("Cloning repository to %s..." % project_path)
            gitpy.clone(args.repository, project_folder)

        print("number of commits: %d" % (get_commit_count(project_path)))
        print("support absolute value: %d" % (support * get_commit_count(project_path)))

        # defining language parser
        parser = BaseParser
        if args.lang == "go":
            parser = GoParser
        elif args.lang == "java":
            parser = JavaParser
        elif args.lang == "python":
            parser = PythonParser

        print("fetching transactions...")

        commits = RepositoryMining(project_path).traverse_commits()
        for index, commit in enumerate(commits):
            if max_commits and index > int(max_commits):
                break

            language_parser = parser(project_path, commit.hash)
            items = language_parser.get_diff()
            if items:
                transactions.append(items)
    else:
        transaction_json = open(transactions_file_name, 'r').read()
        transactions = json.loads(transaction_json)

    if DEBUG:
        print(ansi_color_yellow("Transactions:"))
        for i, changes in enumerate(transactions):
            print("%3d: " % i, end='')
            print(changes)

    if args.out_transactions:
        out_file = open(args.out_transactions, 'w')
        json.dump(transactions, out_file, indent=2)

    print("analyzing transactions...")

    apriori = Apriori(transactions, confidence=float(confidence), support=float(support), max_length=int(max_length))

    print(ansi_color_yellow("Association rules:"))

    # Output in CSV format
    if args.csv:
        apriori.get_rules_csv(1000)
    else:
        rules = apriori.get_rules()
        for i, rule in enumerate(rules):
            print("%3d: " % i, end='')
            print(rule)