教你学Python36-使⽤FP-growth算法来⾼效发现频繁项集我们已经介绍了⽤ Apriori 算法发现 频繁项集 与 关联规则。 本章将继续关注发现 频繁项集 这⼀任务,并使⽤ FP-growth 算法更有效的挖掘 频繁项集。
FP-growth 算法简介
水位显示器⼀种⾮常好的发现频繁项集算法。
基于Apriori算法构建,但是数据结构不同,使⽤叫做 FP树 的数据结构结构来存储集合。下⾯我们会介绍这种数据结构。 FP-growth 算法步骤
基于数据构建FP树
从FP树种挖掘频繁项集
FP树介绍
class treeNode:
def __init__(self, nameValue, numOccur, parentNode):
热转印带self.name = nameValue # 节点名称
# needs to be updated蜜饯LH
self.parent = parentNode # 指向⽗节点
self.children = {} # 存储叶⼦节点
FP-growth 原理
基于数据构建FP树
蓝牙GPS步骤1:
肩垫
1. 遍历所有的数据集合,计算所有项的⽀持度。
2. 丢弃⾮频繁的项。
3. 基于 ⽀持度 降序排序所有的项。
4. 所有数据集合按照得到的顺序重新整理。
5. 重新整理完成后,丢弃每个集合末尾⾮频繁的项。
步骤2:
1. 读取每个集合插⼊FP树中,同时⽤⼀个头部链表数据结构维护不同集合的相同项。dr探测器
最
终得到下⾯这样⼀棵FP树
从FP树中挖掘出频繁项集
步骤3:
1. 对头部链表进⾏降序排序
2. 对头部链表节点从⼩到⼤遍历,得到条件模式基,同时获得⼀个频繁项集。如上图,从头部链表 t 节点开始遍历,t 节点加⼊到频繁项 集。到以 t 节点为结尾的路径如下: 去掉FP树中的t节点,得到条件模式基<;左边路径,左边是值>[z,x,y,s,t]:2,[z,x,y,r,t]:1 。条件模式基的值取决于末尾节点 t ,因为 t 的出现次数最⼩,⼀个频繁项集的⽀持度由⽀持度最⼩的项决定。所以 t 节点的条件模式基的值可以理解为对于以 t 节点为末尾的前缀路径出现次数。