本站分享:AI、大数据、数据分析师培训认证考试,包括:Python培训Excel培训Matlab培训SPSS培训SAS培训R语言培训Hadoop培训Amos培训Stata培训Eviews培训

Eclat算法Python实现_python数据分析

python培训 cdadata 4789℃

Eclat算法Python实现

  Eclat算法是Zaki博士于2000年提出了来的,利用垂直数据库和数据格,采用前缀等价关系划分搜索空间,Eclat算法只需要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,得到的频繁集如下:

Eclat算法Python实现_python数据分析
  完整工程代码如下:
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/

转载请注明:数据分析 » Eclat算法Python实现_python数据分析

喜欢 (2)or分享 (0)