The text below is selected, press Ctrl+C to copy to your clipboard. (⌘+C on Mac) No line numbers will be copied.
Guest
Tub
By Guest on 19th February 2024 07:28:23 AM | Syntax: PYTHON | Views: 112



New Paste New paste | Download Paste Download | Toggle Line Numbers Show/Hide line no. | Copy Paste Copy text to clipboard
  1. def generate_association_rules(transactions, min_confidence=0.6):
  2.     item_counts = {}
  3.     support_threshold = len(transactions) * 0.5  # Minimum support threshold
  4.  
  5.     # Counting item occurrences
  6.     for transaction in transactions:
  7.         for item in set(transaction):
  8.             item_counts[item] = item_counts.get(item, 0) + 1
  9.  
  10.     frequent_items = {item for item, count in item_counts.items() if count >= support_threshold}
  11.  
  12.     # Generating association rules
  13.     rules = []
  14.     for itemset in powerset(frequent_items):
  15.         if len(itemset) > 1:
  16.             for item in itemset:
  17.                 antecedent = frozenset(itemset - {item})
  18.                 consequent = frozenset({item})
  19.                 support_itemset = calculate_support(itemset, transactions)
  20.                 support_antecedent = calculate_support(antecedent, transactions)
  21.                 confidence = support_itemset / support_antecedent
  22.  
  23.                 if confidence >= min_confidence:
  24.                     rules.append((antecedent, consequent, confidence))
  25.  
  26.     return rules
  27.  
  28. def powerset(s):
  29.     result = [[]]
  30.     for elem in s:
  31.         result.extend([subset + [elem] for subset in result])
  32.     return [frozenset(subset) for subset in result]
  33.  
  34. def calculate_support(itemset, transactions):
  35.     count = 0
  36.     for transaction in transactions:
  37.         if itemset.issubset(transaction):
  38.             count += 1
  39.     return count / len(transactions)
  40.  
  41. # Example transactions
  42. transactions = [
  43.     [1, 3, 4],
  44.     [2, 3, 5],
  45.     [1, 2, 3, 5],
  46.     [2, 5],
  47.     [1, 3, 5]
  48. ]
  49.  
  50. # Generating association rules with a confidence of 60%
  51. rules = generate_association_rules(transactions, min_confidence=0.6)
  52.  
  53. # Displaying the association rules
  54. for rule in rules:
  55.     print(f"Rule: {rule[0]} -> {rule[1]}, Confidence: {rule[2]}")





tub