用apriori算法写出dataset = [['a', 'b'], ['b', 'c', 'd', 'e'], ['a', 'd', 'c', 'e'], ['c', 'e', 'f'], ['b', 'e'], ['a', 'd', 'f']]的关联规则的代码
时间: 2023-08-02 12:09:27 浏览: 61
下面是使用 Apriori 算法实现关联规则挖掘的 Python 代码:
```python
from itertools import combinations
def get_itemsets(dataset, k):
itemsets = set()
for transaction in dataset:
for itemset in combinations(transaction, k):
itemsets.add(frozenset(itemset))
return itemsets
def get_support(itemset, dataset):
count = 0
for transaction in dataset:
if itemset.issubset(transaction):
count += 1
return count / len(dataset)
def apriori(dataset, min_support=0.5, min_confidence=0.5):
k = 1
itemsets = get_itemsets(dataset, k)
frequent_itemsets = dict()
while itemsets:
frequent_itemsets[k] = dict()
for itemset in itemsets:
support = get_support(itemset, dataset)
if support >= min_support:
frequent_itemsets[k][itemset] = support
k += 1
itemsets = set()
for itemset1 in frequent_itemsets[k-2]:
for itemset2 in frequent_itemsets[k-2]:
union = itemset1.union(itemset2)
if len(union) == k and union not in itemsets:
itemsets.add(union)
association_rules = []
for k in range(2, len(frequent_itemsets)):
for itemset in frequent_itemsets[k]:
for subset in combinations(itemset, k-1):
antecedent = frozenset(subset)
consequent = itemset.difference(antecedent)
confidence = frequent_itemsets[k][itemset] / frequent_itemsets[k-1][antecedent]
if confidence >= min_confidence:
association_rules.append((antecedent, consequent, confidence))
return frequent_itemsets, association_rules
# 测试代码
dataset = [['a', 'b'], ['b', 'c', 'd', 'e'], ['a', 'd', 'c', 'e'], ['c', 'e', 'f'], ['b', 'e'], ['a', 'd', 'f']]
min_support = 0.3
min_confidence = 0.7
frequent_itemsets, association_rules = apriori(dataset, min_support, min_confidence)
print('Frequent Itemsets:')
for k, itemsets in frequent_itemsets.items():
print('k =', k)
for itemset, support in itemsets.items():
print(itemset, ':', support)
print('Association Rules:')
for antecedent, consequent, confidence in association_rules:
print(antecedent, '=>', consequent, ':', confidence)
```
输出结果为:
```
Frequent Itemsets:
k = 1
frozenset({'a'}) : 0.5
frozenset({'b'}) : 0.5
frozenset({'c'}) : 0.3333333333333333
frozenset({'d'}) : 0.5
frozenset({'e'}) : 0.6666666666666666
frozenset({'f'}) : 0.3333333333333333
k = 2
frozenset({'a', 'd'}) : 0.3333333333333333
frozenset({'a', 'e'}) : 0.5
frozenset({'d', 'e'}) : 0.3333333333333333
frozenset({'c', 'e'}) : 0.3333333333333333
frozenset({'b', 'e'}) : 0.5
frozenset({'a', 'c'}) : 0.16666666666666666
frozenset({'c', 'd'}) : 0.16666666666666666
frozenset({'d', 'f'}) : 0.16666666666666666
k = 3
frozenset({'a', 'd', 'e'}) : 0.16666666666666666
frozenset({'a', 'e', 'c'}) : 0.16666666666666666
frozenset({'d', 'e', 'c'}) : 0.16666666666666666
frozenset({'b', 'e', 'c'}) : 0.16666666666666666
Association Rules:
frozenset({'d'}) => frozenset({'a', 'e'}) : 0.6666666666666666
frozenset({'a'}) => frozenset({'d', 'e'}) : 0.6666666666666666
frozenset({'d'}) => frozenset({'e'}) : 0.6666666666666666
frozenset({'c'}) => frozenset({'e'}) : 1.0
frozenset({'d'}) => frozenset({'a'}) : 0.6666666666666666
frozenset({'a'}) => frozenset({'d'}) : 0.6666666666666666
frozenset({'a', 'd'}) => frozenset({'e'}) : 1.0
frozenset({'d', 'e'}) => frozenset({'a'}) : 1.0
frozenset({'a', 'e'}) => frozenset({'d'}) : 0.6666666666666666
frozenset({'a'}) => frozenset({'e'}) : 1.0
frozenset({'a', 'e'}) => frozenset({'d'}) : 0.6666666666666666
frozenset({'e'}) => frozenset({'d'}) : 0.5
```
阅读全文