FPG是FP-growth算法的简称,推荐算法=》关联算法中最有名的算法之一,是Apriori算法的性能优化版。
参考了一些示例,自行再实现,具体算法如下。
步骤归纳为:
1、第一次遍历获取HeaderTable,包括去重、计频繁数、依据最小支持度去项、重排序(频繁数倒序);
2、第二次遍历更新原列表,包括依据headerTable去除小于最小支持度的项、重排序
3、建FP Tree,包括创建新节点、相似元素项节点合并
调用入口 (test04.py):
#coding:utf-8
import test03
oneDimList = []
def loadSimpDat():
simpDat = [['r', 'z', 'h', 'j', 'p'],
['z', 'y', 'x', 'w', 'v', 'u', 't', 's'],
['z'],
['r', 'x', 'n', 'o', 's'],
['y', 'r', 'x', 'z', 'q', 't', 'p'],
['y', 'z', 'x', 'e', 'q', 's', 't', 'm']]
return simpDat
# 数据准备
simpDat = loadSimpDat()
for list in simpDat:
oneDimList += list
# 建header table
headerTable = test03.HeaderTable().create(oneDimList, 3)
# 建FP tree
buildTree = test03.BuildTree()
updDat = buildTree.refactor(simpDat, headerTable)
fpTree = buildTree.update(updDat)
# 打印结果
for