fp_growth

import collections
min_support = 3
def 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:number
for t in db:
    for i in t[1]:
        tn[i] = tn.get(i,0)+1

ftn ={}#frequent_item:number
for 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_list

dbo = []#(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("")



        

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值