Eclat算法Python实现

52 篇文章 2 订阅
42 篇文章 3 订阅

    Eclat算法是Zaki博士于2000年提出了来的,利用垂直数据库和数据格,采用前缀等价关系划分搜索空间,该算法只需要1次扫描数据库,利用数据垂直表示形式的优势通过交叉计数来计算支持度,能够很快地挖掘出频繁集。
  下面是Eclat算法的Python实现代码:
  //EclatOne.py

#-*- coding: UTF-8 -*-
import sys
import time
type = sys.getfilesystemencoding()

from sys import argv

def eclat(prefix, items):
        while items:
            i,itids = items.pop()
            isupp = len(itids)
            if isupp >= minsup:
              print sorted(prefix+[i]), ':', isupp
              suffix = []
              for j, ojtids in items:
                  jtids = itids & ojtids
                  if len(jtids) >= minsup:
                      suffix.append((j,jtids))
              eclat(prefix+[i], sorted(suffix, key=lambda item: len(item[1]), reverse=True))


data = {}
#str1 = './datasets/T10I4D100K.dat'

str1 = './datasets/mushroom.dat'

#minsup   = int(argv[2])
#minsup = 5

##支持度
ratio = 0.35

minsup = 8124*ratio

trans = 0
#f = open(argv[1], 'r')
f = open(str1)


for row in f:
    trans += 1
    for item in row.split():
        if item not in data:
            data[item] = set()
        data[item].add(trans)
f.close()

##计算运行的时间
start = time.clock()
eclat([], sorted(data.items(), key=lambda item: len(item[1]), reverse=True))

end = time.clock()

print "run time: %f s" % (end-start)

    对mushroom.dat数据集,设置最小支持度为0.35,得到的频繁集如下:


    完整工程代码如下:
    http://download.csdn.net/detail/sanqima/9538348
    该工程也包含Mushroom、connect、movieItem、retail、T10I4D100K、T20I6D300K、kosarakt数据集,其中数据集Mushroom是包含22种蘑菇品种,8124条记录;connect是稠密数据集,T10I4D100K、T20I6D300K是由IBM数据产生器生成的。

    参考地址:http://adrem.ua.ac.be/~goethals/software/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值