0% found this document useful (0 votes)
6 views3 pages

Apriori

Apriori algorithm code

Uploaded by

god914166
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views3 pages

Apriori

Apriori algorithm code

Uploaded by

god914166
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

Program:

class Transaction:
def __init__(self):
self.items = []
self.count = 0
class Itemset:
def __init__(self):
self.itemset = []
self.count = 0
self.support = 0
def get_user_input():
global num_transactions, num_items, transactions
num_transactions = int(input("Enter the number of transactions: "))
num_items = int(input("Enter the number of items: "))
transactions = []
for i in range(num_transactions):
transaction = Transaction()
items = input(f"Enter items for transaction {i + 1} (comma-separated, e.g.,
1,2,3): ").split(',')
transaction.items = list(map(int, items))
transaction.count = len(transaction.items)
transactions.append(transaction)
def print_transactions():
for i, transaction in enumerate(transactions):
print(f"Transaction {i + 1}: {' '.join(map(str, transaction.items))}")
def count_items():
item_counts = [0] * (num_items + 1)
for transaction in transactions:
for item in transaction.items:
item_counts[item] += 1
print("\nItem Counts:")
for i in range(1, num_items + 1):
if item_counts[i] > 0:
print(f"Item {i}: {item_counts[i]}")
def is_subset(subset, set_):
i, j = 0, 0
while i < len(subset) and j < len(set_):
if subset[i] < set_[j]:
return False
elif subset[i] == set_[j]:
i += 1
j += 1
return i == len(subset)
def generate_candidates(k):
candidates = []
for i in range(num_items):
for j in range(i + 1, num_items):
candidate = Itemset()
candidate.itemset = [i + 1, j + 1]
candidate.count = 2
candidate.support = 0
candidates.append(candidate)
return candidates
def generate_candidates_size_k(prev_candidates, k):
candidates = []
length = len(prev_candidates)
for i in range(length):
for j in range(i + 1, length):
first = prev_candidates[i].itemset[:k-2]
if first == prev_candidates[j].itemset[:k-2]:
candidate = Itemset()
candidate.itemset = first + [prev_candidates[i].itemset[k-2],
prev_candidates[j].itemset[k-2]]
candidates.append(candidate)
return candidates
def calculate_support(candidates):
for candidate in candidates:
count = 0
for transaction in transactions:
if is_subset(candidate.itemset, transaction.items):
count += 1
candidate.support = count
def prune_candidates(candidates):
return [candidate for candidate in candidates if candidate.support >= min_support]
def apriori():
candidates = generate_candidates(2)
calculate_support(candidates)
candidates = prune_candidates(candidates)
print("\nFrequent Itemsets of size 2:")
for candidate in candidates:
print(f"{' '.join(map(str, candidate.itemset))} - Support:
{candidate.support}")
k = 3
while candidates:
candidates = generate_candidates_size_k(candidates, k)
calculate_support(candidates)
candidates = prune_candidates(candidates)
if candidates:
print(f"\nFrequent Itemsets of size {k}:")
for candidate in candidates:
print(f"{' '.join(map(str, candidate.itemset))} - Support:
{candidate.support}")
transactions = []
num_transactions = 0
num_items = 0
min_support = 0
get_user_input()
print_transactions()
count_items()
min_support = int(input("Enter the minimum support (e.g., 2): "))
apriori()
Output:

You might also like