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/

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

换个角度思考问题——频繁项集挖掘的两个优化策略

在以前的博客中介绍过数据挖掘的一个基本问题频繁项集挖掘。对于这一问题,有很多不同思想的算法。同时,也有一些优化策略可以在算法基本不变的情况下大大提高算法的效率。今天介绍两个:竖向数据库(Vertica...
  • jiafgn
  • jiafgn
  • 2017年07月12日 17:45
  • 136

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

第11课:彻底解密WordCount运行原理学习笔记

第11课:彻底解密WordCount运行原理学习笔记 本期内容: 1. 从数据流动视角解密WordCount,即用Spark作单词计数统计,数据到底是怎么流动的。 2. 从RDD依赖关系的视角解密Wo...
  • slq1023
  • slq1023
  • 2016年02月28日 23:26
  • 1012

Eclat算法Python实现

  • 2016年06月01日 21:48
  • 67.43MB
  • 下载

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

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

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

(update 2012.12.28 关于本项目下载及运行的常见问题 FAQ见 newsgroup18828文本分类器、文本聚类器、关联分析频繁模式挖掘算法的Java实现工程下载及运行FAQ )一、A...
  • yangliuy
  • yangliuy
  • 2012年04月24日 19:22
  • 32276

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

原文转自:http://blog.csdn.net/yangliuy/article/details/7494983
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Eclat算法Python实现
举报原因:
原因补充:

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