fp_growth
来源:互联网 发布:python加注释快捷键 编辑:程序博客网 时间:2024/04/26 09:13
import collectionsmin_support = 3def sp(s): return [a for a in s]#=====================================================================# main funtnion |#=====================================================================#---------------------------------------------------------------------# generate ordered frequent items |#---------------------------------------------------------------------db = [(100,sp("facdgimp")),(200,sp("abcflmo")),(300,sp("bfhjo")),(400,sp("bcksp")),(500,"afcelpmn")]tn = {}#item:numberfor t in db: for i in t[1]: tn[i] = tn.get(i,0)+1ftn ={}#frequent_item:numberfor k in tn: if tn[k]>=min_support: ftn[k] = tn[k]f_list = collections.OrderedDict(sorted(ftn.items(),key=lambda x:x[1], reverse=True))print f_listdbo = []#(tid,(Ordered)frequent items)for t in db: a = {} for i in t[1]: if i in f_list.keys(): a[i] = f_list[i] b = [] for i in f_list.keys(): if i in a.keys(): b.append(i) dbo.append((t[0],b)) #dbo.append((t[0],[b[0] for b in sorted(a,key=lambda x:x[1],reverse=True)]))#problem here~!print 'dbo', dbo#---------------------------------------------------------------------# construct fp-tree |#---------------------------------------------------------------------'''class HeaderTableItem(): def __init__(self,item,frequency,head=None): self.item = item self.frequency = frequency self.head = head def __repr__(self): return str(self.__dict__)'''header_table = {}for k in f_list: # header_table.append(HeaderTableItem(k,f_list[k])) header_table[k]=[f_list[k],None]print header_table class Tree(): def __init__(self,value,next_same=None): self.value = value self.next_same = next_same self.children = {} def show(self,level): print ' '*level*4,self.value for k in self.children: self.children[k].show(level+1) def __repr__(self): return str(self.value)''' root = Tree("root")root.children.append(Tree("a"))root.children.append(Tree("b"))root.children[0].children.append(Tree("c"))root.show(0)'''def insert_tree(l,t): if l[0] in [c.value for c in t.children]: root = Tree("")