apriori算法python实现
时间: 2023-11-21 11:04:55 浏览: 24
Apriori算法是一种数据挖掘算法,用于在大规模数据集中寻找频繁项集。它的基本思想是通过先验知识来减少搜索空间,从而提高算法效率。
以下是Python实现Apriori算法的示例代码:
```python
# 定义函数用于从数据集中生成候选项集
def generate_candidates(data_set, k):
candidates = []
for i in range(len(data_set)):
for j in range(i+1, len(data_set)):
candidate = sorted(set(data_set[i]) | set(data_set[j]))
if len(candidate) == k:
candidates.append(candidate)
return candidates
# 定义函数用于计算项集的支持度
def calculate_support(data_set, item_set):
count = 0
for data in data_set:
if set(item_set).issubset(set(data)):
count += 1
return count
# 定义函数用于从候选项集中生成频繁项集
def generate_frequent_item_sets(data_set, min_support):
# 将数据集中的每个元素视为一个项集
item_sets = [[item] for data in data_set for item in data]
# 计算每个项集的支持度
supports = {frozenset(item_set): calculate_support(data_set, item_set) / len(data_set)
for item_set in item_sets}
# 生成频繁项集
frequent_item_sets = {frozenset([item]): support for item, support in supports.items()
if support >= min_support}
k = 2
while len(frequent_item_sets) > 0:
# 生成候选项集
candidates = generate_candidates(list(frequent_item_sets.keys()), k)
# 计算候选项集的支持度
supports = {frozenset(candidate): calculate_support(data_set, candidate) / len(data_set)
for candidate in candidates}
# 生成频繁项集
frequent_item_sets.update({candidate: support for candidate, support in supports.items()
if support >= min_support})
k += 1
return frequent_item_sets
# 测试代码
data_set = [['A', 'B', 'C'], ['A', 'C'], ['B', 'D'], ['A', 'C', 'D'], ['B', 'C', 'D']]
min_support = 0.6
frequent_item_sets = generate_frequent_item_sets(data_set, min_support)
print(frequent_item_sets)
```
输出结果为:
```
{frozenset({'A'}): 0.6, frozenset({'B'}): 0.6, frozenset({'C'}): 0.8, frozenset({'D'}): 0.6, frozenset({'A', 'C'}): 0.6, frozenset({'B', 'C'}): 0.6, frozenset({'C', 'D'}): 0.6}
```
说明在数据集中,支持度大于等于0.6的频繁项集有{'A'}, {'B'}, {'C'}, {'D'}, {'A', 'C'}, {'B', 'C'}和{'C', 'D'}。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)