Apriori算法:
扫描一遍数据库,得到一阶频繁项
用一阶频繁项构造二阶候选项
扫描数据库对二阶候选项进行计数,删除其中的非频繁项,得到二阶频繁项
然后构造三阶候选项,以此类推,直到无法构造更高阶的候选项,或到达频繁项集的最大长度限制。
Apriori.py
# 构建初始候选项集
def createC1(dataSet):
C1 = []
for transaction in dataSet:
for item in transaction:
if [item] not in C1:
C1.append([item])
C1.sort()
return list(map(frozenset, C1))
# 计算并筛选Ck中的项集在数据集合D中的支持度
def scanD(D, Ck, minSupport):
ssCnt = {}
# 计算每个的出现次数
for tid in D:
for can in Ck:
if can.issubset(tid):
ssCn