编写程序完成下列算法: 1、apriori算法 输入: 数据集d;最小支持数minsup_count;
时间: 2024-03-23 09:36:18 浏览: 24
以下是 Python 代码实现 Apriori 算法:
```python
def load_dataset():
dataset = [['A', 'B', 'C', 'D'], ['B', 'C', 'E'], ['A', 'B', 'C', 'E'], ['B', 'E']]
return dataset
def create_c1(dataset):
c1 = []
for transaction in dataset:
for item in transaction:
if not [item] in c1:
c1.append([item])
c1.sort()
return list(map(frozenset, c1))
def scan_dataset(dataset, candidate_set, minsup_count):
item_count = {}
for transaction in dataset:
for candidate in candidate_set:
if candidate.issubset(transaction):
if candidate not in item_count:
item_count[candidate] = 1
else:
item_count[candidate] += 1
num_items = float(len(dataset))
freq_sets = []
support_data = {}
for item in item_count:
support = item_count[item] / num_items
if support >= minsup_count:
freq_sets.append(item)
support_data[item] = support
return freq_sets, support_data
def apriori_gen(freq_sets, k):
new_freq_sets = []
len_freq_sets = len(freq_sets)
for i in range(len_freq_sets):
for j in range(i + 1, len_freq_sets):
l1 = list(freq_sets[i])[:k - 2]
l2 = list(freq_sets[j])[:k - 2]
l1.sort()
l2.sort()
if l1 == l2:
new_freq_sets.append(freq_sets[i] | freq_sets[j])
return new_freq_sets
def apriori(dataset, minsup_count):
c1 = create_c1(dataset)
dataset = list(map(set, dataset))
freq_sets1, support_data = scan_dataset(dataset, c1, minsup_count)
freq_sets = [freq_sets1]
k = 2
while len(freq_sets[k - 2]) > 0:
ck = apriori_gen(freq_sets[k - 2], k)
freq_sets_k, support_k = scan_dataset(dataset, ck, minsup_count)
support_data.update(support_k)
freq_sets.append(freq_sets_k)
k += 1
return freq_sets, support_data
```
其中,`load_dataset` 函数用于加载数据集,`create_c1` 函数用于生成单个候选集,`scan_dataset` 函数用于从数据集中扫描候选集得到频繁项集,`apriori_gen` 函数用于生成新的候选集,`apriori` 函数是 Apriori 算法的主要实现。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)
![](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)
![](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)
![](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)
![](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)