# 构建关联规则模型 from numpy import * def loadDataSet(): return [['a', 'c', 'e'], ['b', 'd'], ['b', 'c'], ['a', 'b', 'c', 'd'], ['a', 'b'], ['b', 'c'], ['a', 'b'], ['a', 'b', 'c', 'e'], ['a', 'b', 'c'], ['a', 'c', 'e']] def createC1(dataSet): C1 = [] for transaction in dataSet: for item in transaction: if not [item] in C1: C1.append([item]) C1.sort() # 映射为frozenset唯一性的,可使用其构造字典 return list(map(frozenset, C1)) # 从候选K项集到频繁K项集(支持度计算) def scanD(D, Ck, minSupport): ssCnt = {} for tid in D: # 遍历数据集 for can in Ck: # 遍历候选项 if can.issubset(tid): # 判断候选项中是否含数据集的各项 if not can in ssCnt: ssCnt[can] = 1 # 不含设为1 else: ssCnt[can] += 1 # 有则计数加1 numItems = float(len(D)) # 数据集大小 retList = [] # L1初始化 supportData = {} # 记录候选项中各个数据的支持度 for key in ssCnt: support = ssCnt[key] / numItems # 计算支持度 if support >= minSupport: retList.insert(0, key) # 满足条件加入L1中 supportData[key] = support return retList, supportData
时间: 2024-04-03 08:31:39 浏览: 28
ANN-from-scratch:仅使用NumPy Python库以及MLOps基础来构建人工神经网络
这段代码是用来构建Apriori算法中的频繁项集的,包含两个函数。其中loadDataSet函数是用来读取数据集的,createC1函数是用来生成候选1项集的。scanD函数则是从候选K项集到频繁K项集的过程,支持度计算也在其中完成。这段代码的实现方式比较基础,但是可以很好地帮助理解Apriori算法的原理。
阅读全文