机器学习——FP-growth算法
FP-growth算法 1.原理 相较于Apriori算法,FP-growth算法在发现频繁项集上有更快的速度。 FP-growth算法将数据存储在FP树的紧凑数据结构中。与搜索树不同的是,一个元素可以在FP树中出现多次。FP树会储存项集的出现频率,每个项集以路径的方式储存在树中,并通过link连接相似元素。 构建FP树需要对原始数据集扫描两遍。第一次遍历数据集会获得每个元素项的出现频率,去除不满足最小支持率的元素项。第二次扫描只需要考虑频繁元素构建FP树。构建树时,将每个项集根据元素项的绝对出现频率进行排序,之后读入每个项集并将其添加到已存在的路径中,若该路径不存在则创建新路径。 2.代码 (1)创建FP树 # 用于保存树的节点 class TreeNode : def __init__ ( self , nameValue , occurNum , parentNode ) : self . name = nameValue # 节点名字 self . count = occurNum # 计数值 self . nodeLink = None # 链接相似的元素 self . parent = parentNode # 当前节点的父节点 self . children = { } # 当前节点的所有子节点 def increase ( self , occurNum ) :