Eclat算法Python实现

原创 2016年06月01日 22:00:09

  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/

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

数据挖掘---关联规则---ECLAT算法

关联规则用于发现交易数据中,不同商品之间的关系,这些规则反映了顾客的购买行为模式。如顾客经常在购买A商品的时候也会购买B商品,著名的“啤酒与尿布”的案例就是关联规则的成功应用案例 导语 不同于Apri...

数据挖掘-关联分析频繁模式挖掘Apriori、FP-Growth及Eclat算法的JAVA及C++实现

(update 2012.12.28 关于本项目下载及运行的常见问题 FAQ见 newsgroup18828文本分类器、文本聚类器、关联分析频繁模式挖掘算法的Java实现工程下载及运行FAQ )一、A...

关联规则算法之FP growth算法

FP树构造 FP Growth算法利用了巧妙的数据结构,大大降低了Aproir挖掘算法的代价,他不需要不断得生成候选项目队列和不断得扫描整个数据库进行比对。为了达到这样的效果,它采用了一种简洁的...

关联规则算法---Eclat算法

Eclat算法[编辑] 与fp-growth 和apriori算法不同,Eclat算法加入了倒排的思想,具体就是将事务数据中的项作为key,每个项对应的事务ID作为value。 原输入数据为 ...

Python中对两种utf-8格式的理解

博客核心内容:1、python文件开头utf-8格式的理解 2、程序中读取文件时utf-8格式的理解代码示例:#!/usr/bin/python # -*- coding:utf-8 -*-fr1 ...

Eclat算法Python实现

  • 2016-06-01 21:48
  • 67.43MB
  • 下载

Apriori、FP-Growth及Eclat算法

注:本文转载自yangliuy http://blog.csdn.net/yangliuy/article/details/7494983 数据挖掘-关联分析频繁模式挖掘Apriori、FP-Grow...

关联规则挖掘算法-ECLAT

ECLAT-等价类转换(Equivalent CLAss Transformation) ECLAT使用垂直数据格式挖掘频繁项集。垂直数据apriori算法和fp-growth算法都从TID项集格式...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)