from numpy import * import itertools support_dic = {} #获取整个数据库中的一阶元素 # C1 = {1, 2, 3, 4, 5} def createC1(dataSet): C1 = set([]) for item in dataSet: C1 = C1.union(set(item)) return [frozenset([i]) for i in C1] #输入数据库(dataset) 和 由第K-1层数据融合后得到的第K层数据集(Ck), #用最小支持度(minSupport)对 Ck 过滤,得到第k层剩下的数据集合(Lk) def getLk(dataset, Ck, minSupport): global support_dic Lk = {} #计算Ck中每个元素在数据库中出现次数 for item in dataset: for Ci in Ck: if Ci.issubset(item): if not Ci in Lk: Lk[Ci] = 1 else: Lk[Ci] += 1 #用最小支持度过滤 Lk_return = [] for Li in Lk: support_Li = Lk[Li] / float(len(dataSet)) if support_Li >= minSupport: Lk_return.append(Li) support_dic[Li] = support_Li return Lk_return
时间: 2023-06-26 16:09:43 浏览: 81
这段代码是 Apriori 算法中的实现部分,用于挖掘频繁项集。首先通过 `createC1` 函数获取整个数据库中所有一阶元素的集合,然后利用 Apriori 原理依次生成每层的候选项集(Ck),并通过 `getLk` 函数计算每个候选项集在数据库中出现的次数,最后过滤掉支持度低于最小支持度的项集,得到每层的频繁项集(Lk)。其中 `support_dic` 是一个全局变量,用于记录每个项集的支持度。
阅读全文