Exemple #1
0
    def insert_into_conditional_fp_tree(self, pattern_list, count_of_pattern,
                                        conditional_fp_tree,
                                        conditional_header_table):
        # return if patternArrayList is empty
        if not pattern_list:
            return

        item_to_add_to_tree = pattern_list[0]
        new_node = None
        done = False
        for child in conditional_fp_tree.children:
            if child.item == item_to_add_to_tree:
                new_node = child
                child.count += count_of_pattern
                done = True
                break

        if not done:
            for header_pointer in conditional_header_table:
                # remove non frequents too
                if header_pointer.item == item_to_add_to_tree:
                    new_node = FPTree(item_to_add_to_tree)
                    new_node.count = count_of_pattern
                    new_node.parent = conditional_fp_tree
                    conditional_fp_tree.children.append(new_node)
                    while header_pointer.next is not None:
                        header_pointer = header_pointer.next
                    header_pointer.next = new_node
        pattern_list.pop(0)
        self.insert_into_conditional_fp_tree(pattern_list, count_of_pattern,
                                             new_node,
                                             conditional_header_table)
    def insert_into_conditional_fp_tree(self, pattern_list, count_of_pattern, conditional_fp_tree,
                                        conditional_header_table):
        # return if patternArrayList is empty
        if not pattern_list:
            return

        item_to_add_to_tree = pattern_list[0]
        new_node = None
        done = False
        for child in conditional_fp_tree.children:
            if child.item == item_to_add_to_tree:
                new_node = child
                child.count += count_of_pattern
                done = True
                break

        if not done:
            for header_pointer in conditional_header_table:
                # remove non frequents too
                if header_pointer.item == item_to_add_to_tree:
                    new_node = FPTree(item_to_add_to_tree)
                    new_node.count = count_of_pattern
                    new_node.parent = conditional_fp_tree
                    conditional_fp_tree.children.append(new_node)
                    while header_pointer.next is not None:
                        header_pointer = header_pointer.next
                    header_pointer.next = new_node
        pattern_list.pop(0)
        self.insert_into_conditional_fp_tree(pattern_list, count_of_pattern, new_node, conditional_header_table)
Exemple #3
0
    def insert_into_tree(self, transaction_sorted_by_frequency, fp_tree):
        # return when list is empty
        if not transaction_sorted_by_frequency:
            return
        item_to_add_to_tree = transaction_sorted_by_frequency[0]
        new_node = None
        done = False
        for child in fp_tree.children:
            if child.item == item_to_add_to_tree:
                new_node = child
                child.count += 1
                done = True
                break

        if not done:
            new_node = FPTree(item_to_add_to_tree)
            new_node.count = 1
            new_node.parent = fp_tree
            fp_tree.children.append(new_node)
            for header_pointer in self.header_table:
                if header_pointer.item == item_to_add_to_tree:
                    while header_pointer.next is not None:
                        header_pointer = header_pointer.next
                    header_pointer.next = new_node

        transaction_sorted_by_frequency.pop(0)
        self.insert_into_tree(transaction_sorted_by_frequency, new_node)
    def insert_into_tree(self, transaction_sorted_by_frequency, fp_tree):
        # return when list is empty
        if not transaction_sorted_by_frequency:
            return
        item_to_add_to_tree = transaction_sorted_by_frequency[0]
        new_node = None
        done = False
        for child in fp_tree.children:
            if child.item == item_to_add_to_tree:
                new_node = child
                child.count += 1
                done = True
                break

        if not done:
            new_node = FPTree(item_to_add_to_tree)
            new_node.count = 1
            new_node.parent = fp_tree
            fp_tree.children.append(new_node)
            for header_pointer in self.header_table:
                if header_pointer.item == item_to_add_to_tree:
                    while header_pointer.next is not None:
                        header_pointer = header_pointer.next
                    header_pointer.next = new_node

        transaction_sorted_by_frequency.pop(0)
        self.insert_into_tree(transaction_sorted_by_frequency, new_node)