以下是使用Python实现的Apriori算法的数值矩阵解决方法的代码示例:
# 导入所需的库
from itertools import combinations
# 定义函数来生成候选项集
def generate_candidates(items, length):
candidates = []
for item in items:
for i in range(len(item)):
candidate = item[:i] + item[i+1:]
if candidate not in candidates and len(candidate) == length:
candidates.append(candidate)
return candidates
# 定义函数来计算项集的支持度
def calculate_support(itemset, transactions):
count = 0
for transaction in transactions:
if all(item in transaction for item in itemset):
count += 1
return count
# 定义Apriori算法函数
def apriori(transactions, min_support, min_confidence):
# 构建初始项集
items = []
for transaction in transactions:
for item in transaction:
if [item] not in items:
items.append([item])
# 生成频繁项集
frequent_itemsets = []
k = 2
while True:
candidates = generate_candidates(items, k)
supports = []
for candidate in candidates:
support = calculate_support(candidate, transactions)
supports.append(support)
if support >= min_support:
frequent_itemsets.append(candidate)
if not frequent_itemsets:
break
items = frequent_itemsets.copy()
k += 1
# 生成关联规则
association_rules = []
for itemset in frequent_itemsets:
if len(itemset) > 1:
subsets = list(combinations(itemset, 1))
for subset in subsets:
subset_support = calculate_support(list(subset), transactions)
confidence = calculate_support(itemset, transactions) / subset_support
if confidence >= min_confidence:
association_rules.append((list(subset), list(set(itemset) - set(subset))), confidence)
return frequent_itemsets, association_rules
# 示例用法
transactions = [
['A', 'B', 'C'],
['A', 'B', 'D'],
['B', 'C', 'E'],
['A', 'B', 'C', 'D'],
['B', 'D', 'E']
]
min_support = 2
min_confidence = 0.5
frequent_itemsets, association_rules = apriori(transactions, min_support, min_confidence)
# 输出结果
print("频繁项集:")
for itemset in frequent_itemsets:
print(itemset)
print("\n关联规则:")
for rule in association_rules:
print(rule)
这个示例代码中使用的数据集是一个包含5个事务的列表,每个事务都是一个项集。在示例中,我们设置了最小支持度为2(即项集在所有事务中出现的最小次数)和最小置信度为0.5(即关联规则必须满足的最低置信度)。运行代码后,将输出频繁项集和关联规则的列表。
下一篇:Apriori算法关联规则