# 构建关联规则模型 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 09:31:41 浏览: 75
ANN-from-scratch:仅使用NumPy Python库以及MLOps基础来构建人工神经网络
这段代码是实现了 Apriori 算法中的两个函数,分别是 `createC1()` 和 `scanD()`。具体解释如下:
1. `createC1(dataSet)` 函数:该函数用于从数据集中创建大小为1的候选项集列表 C1。其中,数据集 dataSet 是一个列表,它包含多个交易记录,每个交易记录又是一个列表,表示该交易包含的商品项。函数的具体实现过程如下:
- 遍历数据集中的每个交易记录 transaction。
- 对于每个交易记录,遍历其中的每个商品项 item。
- 如果候选项集列表 C1 中不存在包含该商品项的项集 [item],则将 [item] 添加到 C1 中。
- 最后,将 C1 中的每个项集转换成 frozenset 类型,以便后续使用。
2. `scanD(D, Ck, minSupport)` 函数:该函数用于从候选项集列表 Ck 中生成频繁项集列表 Lk,并且计算每个频繁项集的支持度。其中,D 是数据集,Ck 是候选项集列表,minSupport 是最小支持度。函数的具体实现过程如下:
- 遍历数据集 D 中的每个交易记录 tid。
- 对于每个交易记录,遍历候选项集列表 Ck 中的每个项集 can。
- 如果候选项集 can 是交易记录 tid 的子集,则将候选项集 can 的计数器加1。
- 统计完所有交易记录后,遍历候选项集计数器字典 ssCnt 中的每个项集 key。
- 如果项集 key 的支持度大于等于最小支持度 minSupport,则将该项集加入频繁项集列表 L1 中,并记录该项集的支持度 support。
- 最后,返回频繁项集列表 L1 和各个项集的支持度字典 supportData。
这两个函数是 Apriori 算法中的核心函数,用于从数据集中挖掘频繁项集和关联规则。
阅读全文