Abc
Abc
def load_data():
# Sample transaction data
data = [
['A', 'B', 'C', 'D'],
['A', 'B', 'D'],
['A', 'C', 'D'],
['B', 'D']
]
return data
def generate_itemsets(data):
itemsets = set()
for transaction in data:
for item in transaction:
itemsets.add(frozenset([item]))
return itemsets
return support
k=1
while True:
if k == 1:
itemsets = generate_itemsets(data)
else:
itemsets = generate_candidate_itemsets(itemsets, k)
if not support:
break
ax2 = ax1.twinx()
ax2.plot(list(map(str, labels)), itemset_sizes, color='r', marker='o', label='Itemset Size')
ax2.set_ylabel('Itemset Size', color='r')
ax2.tick_params('y', colors='r')
if save_path:
plt.savefig(save_path)
else:
plt.show()
def plot_all_frequent_itemsets(all_frequent_itemsets):
for level, frequent_itemsets in enumerate(all_frequent_itemsets, start=1):
plot_frequent_itemsets(frequent_itemsets, level,
save_path=f'frequent_itemsets_level_{level}.png')
def print_and_save_association_rules(association_rules):
print("Association Rules:")
for antecedent, consequent, confidence in association_rules:
print(f"{antecedent} => {consequent} (Confidence: {confidence})")
fig, ax = plt.subplots()
ax.barh(labels, confidences, color='green', alpha=0.7)
ax.set_xlabel('Confidence')
ax.set_title(title)
if save_path:
plt.savefig(save_path)
else:
plt.show()
def evaluate_efficiency(all_frequent_itemsets):
for level, frequent_itemsets in enumerate(all_frequent_itemsets, start=1):
print(f"Level {level} - Number of Itemsets: {len(frequent_itemsets)}")
def generate_graph(data):
G = nx.Graph()
for transaction in data:
G.add_nodes_from(transaction)
G.add_edges_from(itertools.combinations(transaction, 2))
return G
if __name__ == "__main__":
data = load_data()
min_support = 0.5
min_confidence = 0.6
evaluate_efficiency(all_frequent_itemsets)
plot_all_frequent_itemsets(all_frequent_itemsets)
frequent_itemsets_dict = dict(itertools.chain.from_iterable(all_frequent_itemsets))
association_rules = generate_association_rules(frequent_itemsets_dict.items(), min_confidence)
print_and_save_association_rules(association_rules)