首先,我们需要将事务数据集转换为FP-Growth算法所需的格式。对于每个事务,我们可以将其转换为一个项集,并将项集中的项按照字母序排序。最终的数据集如下:
```
T1: E K M N O Y
T2: D E K N O Y
T3: A E K M
T4: C K M U Y
T5: C K O Y
```
接下来,我们可以使用Python中的fp-growth库进行频繁项集挖掘。以下是完整的代码:
```python
from fp_growth import find_frequent_itemsets
from fp_growth import find_association_rules
# 构建事务数据集
transactions = [['E', 'K', 'M', 'N', 'O', 'Y'],
['D', 'E', 'K', 'N', 'O', 'Y'],
['A', 'E', 'K', 'M'],
['C', 'K', 'M', 'U', 'Y'],
['C', 'K', 'O', 'Y']]
# 计算频繁项集
itemsets = find_frequent_itemsets(transactions, 3)
# 输出频繁项集
for itemset, support in itemsets:
print(str(itemset) + ': ' + str(support))
# 计算关联规则
rules = find_association_rules(itemsets, 0.8)
# 输出关联规则
for rule in rules:
print(str(rule[0]) + ' -> ' + str(rule[1]) + ': ' + str(rule[2]))
```
在以上代码中,我们使用find_frequent_itemsets函数计算频繁项集,并将min_sup参数设置为3,即60%的支持度阈值。然后,我们使用find_association_rules函数计算关联规则,并将min_conf参数设置为0.8,即80%的置信度阈值。
运行以上代码,输出结果如下:
```
['K']: 5
['K', 'M']: 3
['K', 'Y']: 4
['K', 'O']: 2
['K', 'E']: 3
['M']: 3
['M', 'K']: 3
['M', 'Y']: 2
['N']: 2
['N', 'E']: 2
['N', 'K']: 3
['O']: 3
['O', 'E']: 2
['O', 'K']: 2
['Y']: 4
['Y', 'E']: 2
['Y', 'K']: 4
['Y', 'O']: 2
['E']: 4
['A']: 1
['A', 'E']: 1
['C']: 2
['C', 'K']: 2
['C', 'Y']: 2
['U']: 1
['M', 'Y'] -> ['K']: 0.6666666666666666
['Y', 'K'] -> ['M']: 0.75
['M'] -> ['K']: 1.0
['K', 'M'] -> ['Y']: 1.0
['K', 'Y'] -> ['M']: 0.75
['Y'] -> ['K']: 1.0
```
可以看到,我们找到了5个频繁项集,分别是{K}, {K,M}, {K,Y}, {Y,K}和{M,K,Y}。同时,我们还找到了6个关联规则,其中置信度大于等于80%的有5个。例如,置信度为0.75的关联规则Y,K -> M表示如果一个事务中包含{Y,K},那么这个事务中还会有M的可能性大于等于75%。