我把关于FP-Growth的算法原理,python实现代码,以及代码解读放在了另外一篇文章:有兴趣可以看看。
这篇文章给出该算法的一个很酷的实例应用。我们将用到一个叫 kosarak.dat 的数据集,可以从这里下载。这份数据集包含将近100万条记录,对于展示FP-Growth算法的速度十分有效。该文件的每一行包含某个用户浏览过的新闻报道。用户和报道被编码成整数。
为了看起来方便,还是先放一下python的实现代码:
#FP-Growth实现代码
class treeNode:
def __init__(self, nameValue, numOccur, parentNode):
self.name = nameValue
self.count = numOccur
self.nodeLink = None
self.parent = parentNode
self.children = {}
def inc(self, numOccur):
self.count += numOccur
def disp(self, ind=1):
print ' '*ind, self.name, ' ', self.count
for child in self.children.values():
child.disp(ind+1)
def updateHeader(nodeToTest, targetNode):
while nodeToTest.nodeLink != None:
nodeToTest = nodeToTest.nodeLink
nodeToTest.nodeLink = targetNode
def updateFPtree(items, inTree, headerTable, count):
if items[0] in inTree.children:
# 判断items的第一个结点是否已作为子结点
inTree.children[items[0]].inc(count)
else:
# 创建新的分支
inTr