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 #将经过支持度过滤后的第K层数据集合(Lk)融合 #得到第k+1层原始数据Ck1 '''连接步''' def genLk1(Lk): Ck1 = [] for i in range(len(Lk) - 1): for j in range(i + 1, len(Lk)): if sorted(list(Lk[i]))[0:-1] == sorted(list(Lk[j]))[0:-1]: Ck1.append(Lk[i] | Lk[j]) return Ck1 #遍历所有二阶及以上的频繁项集合 def genItem(freqSet, support_dic): for i in range(1, len(freqSet)): for freItem in freqSet[i]: genRule(freItem)
时间: 2023-06-26 07:09:45 浏览: 104
这是一个实现Apriori算法的Python代码。Apriori算法用于从大规模数据集中挖掘频繁项集和关联规则。代码中首先定义了一个函数createC1,用于获取整个数据库中的一阶元素。然后定义了函数getLk,用于获取由第K-1层数据融合后得到的第K层数据集(Ck),并用最小支持度对Ck过滤,得到第k层剩下的数据集合(Lk)。接下来定义了函数genLk1,用于将经过支持度过滤后的第K层数据集合(Lk)融合,得到第k+1层原始数据Ck1。最后定义了函数genItem,用于遍历所有二阶及以上的频繁项集合,并生成关联规则。
相关问题
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
这段代码是 Apriori 算法中的实现部分,用于挖掘频繁项集。首先通过 `createC1` 函数获取整个数据库中所有一阶元素的集合,然后利用 Apriori 原理依次生成每层的候选项集(Ck),并通过 `getLk` 函数计算每个候选项集在数据库中出现的次数,最后过滤掉支持度低于最小支持度的项集,得到每层的频繁项集(Lk)。其中 `support_dic` 是一个全局变量,用于记录每个项集的支持度。
阅读全文