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("")        

原创粉丝点击