彼得·哈林顿确实牛B ! ! !
构建FP树,实现频繁集挖掘
class treeNode: ,,,def __init__ (nameValue,自我,还以为,numOccur, parentNode): ,,,,,,,self.name =nameValue ,,,,,,,self.count =numOccur ,,,,,,,self.nodeLink =,没有 ,,,,,,,self.parent =, parentNode ,,,,, # needs 用be 更新 ,,,,,,,self.children =, {}, ,,,, ,,,def 公司(自我,,numOccur): ,,,,,,,self.count +=numOccur ,,,,,,, ,,,def disp(自我,,印第安纳=1): ,,,,,,,print “,,”印第安纳州,,self.name,,‘,’, self.count ,,,,,,,for child 拷贝self.children.values (): ,,,,,,,,,,,child.disp(印第安纳州+ 1) def createTree(数据集,度=1):,# create FP-tree 得到dataset but 不't 我的 ,,,headerTable =, {} ,,,# go 配套;dataSet 两次 ,,,for trans 拷贝数据集:# first pass counts frequency of 电机 ,,,,,,,for item 拷贝反式: ,,,,,,,,,,,headerTable[项目],=,headerTable.get(项目,,0),+,数据集(反式) ,,,for k 拷贝headerTable.keys ():,, # remove items not meeting 度 ,,,,,,,if headerTable [k], & lt;,度:, ,,,,,,,,,,,德尔(headerTable [k]) ,,,freqItemSet =,集(headerTable.keys ()) ,,,# print freqItemSet, freqItemSet:, ,,,if len (freqItemSet),==, 0:, return 没有,,None , # if no items meet min support ——祝辞get ,,,for k 拷贝headerTable: ,,,,,,,headerTable [k],=, (headerTable [k],没有),# reformat headerTable 用use Node link ,,,# print headerTable, headerTable:, ,,,retTree =, treeNode (Null 设定,,1,,也没有),# create 树 ,,,for tranSet,, count 拷贝dataSet.items ():,, # go through dataset 2 nd 时间 ,,,,,,,localD =, {} ,,,,,,,for item 拷贝tranSet:,, # put transaction items 拷贝订单 ,,,,,,,,,,,if item 拷贝freqItemSet: ,,,,,,,,,,,,,,,localD[项目],=,headerTable[项目][0] ,,,,,,,if len (localD),祝辞,0: ,,,,,,,,,,,orderedItems =, (v [0], for v 拷贝排序(localD.items(),,关键=lambda p:, p[1],反向=True)) ,,,,,,,,,,,updateTree (retTree, orderedItems,还以为,headerTable, count) # populate tree with ordered freq itemset ,,,return retTree,, headerTable # return tree 以及header 表 def updateTree (inTree,物品,还以为,headerTable,计数): ,,,if 项目[0],拷贝inTree.children: # check if orderedItems [0], retTree.children拷贝 ,,,,,,,inTree.children[项目[0]]. inc(计数),# incrament 计数 其他,,,,,,,# add 项目[0],用inTree.children ,,,,,,,inTree.children[项目[0]],=,treeNode ([0],,,, inTree) ,,,,,,,if headerTable[项目[0]][1],==,没有:,# update header table ,,,,,,,,,,,headerTable[项目[0]][1],=,inTree.children[项目[0]] null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null学习日志——-FP-growth算法发现频繁集