具体算法实现细节请查看IEEE论文:Set-oriented mining for association rules in relational databases

SETM算法代码+测试用例+具体操作步骤下载戳这http://download.csdn.net/detail/michealtx/4266085

sql语言实现,找出来所有的频繁模式。代码如下:

---------------最终版--------------drop table c1,c2,c3,c4,r1,r2,r3,r4
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
--为SETMAlgorithm数据库创建空表r1
create table R1
(tx_id int,item1 nvarchar(50)
)--把setmbackup数据库的sales_data表中导入数据到r1中
insert into R1
select *
from SETMBackup.dbo.SALES_DATA-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
--------------------setm算法过程---------------
--将R1按item1排序
select * into #temp from R1--把R1内容存到临时表temp中
delete from R1--删除R1
insert R1 select * from #temp order by item1--将临时表temp按item1升序排序后插入到R1
drop table #temp--删除临时表temp--声明最小支持度MinSupport
declare @minimum_support int
set @minimum_support=3declare @MinSupport varchar(10)
set @MinSupport=cast(@minimum_support as varchar(10))--声明变量k
declare @k int
set @k=1--由R1生成C1
declare @CK varchar(100)
set @CK='C'+cast(@k as varchar(100)) declare @CreateTable varchar(100)
set @CreateTable=' create table '+@CK+' (item1 nvarchar(10),cnt int) ' declare @RK varchar(10)
set @RK='R'+cast(@k as varchar(100)) declare @InsertInto varchar(100)
set @InsertInto=' insert into '+@CK+' select item1,COUNT(*) from '+@RK+' group by item1 having COUNT(*)>='+@MinSupportexec(@CreateTable)
exec(@InsertInto)
print '由R1生成C1'--进入循环
declare @RKNotEmpty varchar(100)
--set @RKNotEmpty='if not exists(select * from '+@RK+') begin drop table '+@RK+' break end'declare @KMinusOne int
set @KMinusOne=1declare @RKMinusOne varchar(10)
set @RKMinusOne='R'+cast(@KMinusOne as varchar(100)) while 1=1
beginprint '进入循环'set @KMinusOne=@kset @RKMinusOne='R'+cast(@KMinusOne as varchar(100)) set @k=@k+1   set @RK='R'+cast(@k as varchar(100)) ---------------------------------------------------------------------将R[k-1]按全部列排序---------------declare @str1 varchar(MAX)set @str1='declare @max int select @max=count(name) from syscolumns where id=object_id('''+@RKMinusOne+''') --print @max declare @min int set @min=1 declare @tt varchar(max) set @tt='''' while @min<=@max begin declare @name varchar(MAX) select @name=name from( select row_number()over(order by getdate()) as num, name from syscolumns where id=object_id('''+@RKMinusOne+'''))a where num=@min set @tt=ISNULL(@tt,'','')+@name+'','' set @min=@min+1 end --print @tt declare @ss varchar(max)set @ss='''' set  @ss=''select * into #temp from '+@RKMinusOne+' order by ''+LEFT(@tt,LEN(@tt)-1)+'' delete from '+@RKMinusOne+' insert '+@RKMinusOne+' select * from #temp drop table #temp''exec(@ss)'exec(@str1)print '将R[k-1]按全部列排序完成'--扫描R[k-1]和R1将符合条件者合并生成RKTemp(即R'[K])declare @num intset @num=1declare @str varchar(max)set @str='create table RKTemp('declare @sql varchar(1000)set @sql='tx_id int,'while @num<=@kbeginset @sql=ISNULL(@sql,',')+'item'+CAST(@num as varchar)+' nvarchar(50),'set @num=@num+1endset @str=@str+left(@sql,LEN(@sql)-1)+')'exec(@str)declare @str2 varchar(max)set @str2='insert into rktemp select '+@RKMinusOne+'.*,myr1.item1 from '+@RKMinusOne+', R1 myr1where '+@RKMinusOne+'.tx_id=myr1.tx_id and myr1.item1>'+@RKMinusOne+'.item'+cast(@KMinusOne as varchar(10))exec(@str2)print '扫描R[k-1]和R1将符合条件者合并生成Rktemp完成'---------------将RKTemp(即R'[K])按全部item列排序--------------------set @str1='declare @max int select @max=count(name) from syscolumns where id=object_id('''+'RKTemp'+''') --print @max declare @min int set @min=2 declare @tt varchar(max) set @tt='''' while @min<=@max begin declare @name varchar(MAX) select @name=name from( select row_number()over(order by getdate()) as num, name from syscolumns where id=object_id('''+'RKTemp'+'''))a where num=@min set @tt=ISNULL(@tt,'','')+@name+'','' set @min=@min+1 end --print @tt declare @ss varchar(max)set @ss='''' set  @ss=''select * into #temp from '+'RKTemp'+' order by ''+LEFT(@tt,LEN(@tt)-1)+'' delete from '+'RKTemp'+' insert '+'RKTemp'+' select * from #temp drop table #temp''exec(@ss)'exec(@str1)print '将RKTemp按全部item列排序完成'-------------------用RKTemp(即R'[k])计算支持度生成C[K]-------------------declare @number intset @number=1set @CK='C'+cast(@k as varchar(100)) declare @string varchar(max)set @string='create table '+@CK+'('declare @sqlstring varchar(1000)set @sqlstring=''while @number<=@kbeginset @sqlstring=ISNULL(@sqlstring,',')+'item'+CAST(@number as varchar)+' nvarchar(50),'set @number=@number+1endset @sqlstring=@sqlstring+'cnt int,'--print left(@sqlstring,LEN(@sqlstring)-1)set @string=@string+left(@sqlstring,LEN(@sqlstring)-1)+')'exec(@string)declare @group varchar(max)set @group=''set @number=1while @number<=@kbeginset @group=ISNULL(@group,',')+'item'+CAST(@number as varchar)+','set @number=@number+1endset @group=left(@group,LEN(@group)-1)--print '@group='+@groupdeclare @string2 varchar(max)set @string2='insert into '+@CK+' select '+@group+',count(*) from RKTemp group by '+@group+' having count(*)>='+@MinSupport--print '@string2='+@string2exec(@string2)print '用RKTemp计算支持度生成C[K]完成'-----------------用RKTemp和C[K]生成R[K]--------------------------        declare @numbert intset @numbert=1set @RK='R'+cast(@k as varchar(100)) declare @stringt varchar(max)set @stringt='create table '+@RK+'('declare @sqlstringt varchar(1000)set @sqlstringt='tx_id int,'while @numbert<=@kbeginset @sqlstringt=ISNULL(@sqlstringt,',')+'item'+CAST(@numbert as varchar)+' nvarchar(50),'set @numbert=@numbert+1end--print left(@sqlstringt,LEN(@sqlstringt)-1)set @stringt=@stringt+left(@sqlstringt,LEN(@sqlstringt)-1)+')'exec(@stringt)declare @string3 varchar(max)set @string3='insert into '+@RK+' select RKTemp.* from RKTemp,'+@CK+'where RKTemp.item1='+@CK+'.item1 and  RKTemp.item'+cast(@k as varchar(10))+'='+@CK+'.item'+cast(@k as varchar(10))--print '@string3='+@string3exec(@string3)print '用RKTemp和C[K]生成R[K]完成'-------------------R'[k]用完要删除----------------drop table RKTemp----------------------@RKNotEmpty重新赋值,若RK为空,则退出循环-------------set @RKNotEmpty='select tx_id into panduan from '+@RKexec(@RKNotEmpty)if not exists(select * from panduan)begindrop table panduanprint @RK+'为空,跳出循环啦!'breakendelsedrop table panduan
end----------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------

数据挖掘之关联规则挖掘之SETM算法实现相关推荐

  1. 【数据挖掘】关联规则挖掘 Apriori 算法 ( Apriori 算法过程 | Apriori 算法示例 )

    文章目录 一. Apriori 算法过程 二. Apriori 算法示例 参考博客 : [数据挖掘]关联规则挖掘 Apriori 算法 ( 关联规则简介 | 数据集 与 事物 Transaction ...

  2. 【数据挖掘】关联规则挖掘 Apriori 算法 ( 关联规则性质 | 非频繁项集超集性质 | 频繁项集子集性质 | 项集与超集支持度性质 )

    文章目录 一. 非频繁项集超集性质 二. 频繁项集子集性质 三. 项集与超集支持度性质 参考博客 : [数据挖掘]关联规则挖掘 Apriori 算法 ( 关联规则简介 | 数据集 与 事物 Trans ...

  3. 【数据挖掘】关联规则挖掘 Apriori 算法 ( 频繁项集 | 非频繁项集 | 强关联规则 | 弱关联规则 | 发现关联规则 )

    文章目录 一. 频繁项集 二. 非频繁项集 三. 强关联规则 四. 弱关联规则 五. 发现关联规则 参考博客 : [数据挖掘]关联规则挖掘 Apriori 算法 ( 关联规则简介 | 数据集 与 事物 ...

  4. 【数据挖掘】关联规则挖掘 Apriori 算法 ( 关联规则 | 数据项支持度 | 关联规则支持度 )

    文章目录 一. 关联规则 二. 数据项支持度 三. 关联规则支持度 参考博客 : [数据挖掘]关联规则挖掘 Apriori 算法 ( 关联规则简介 | 数据集 与 事物 Transaction 概念 ...

  5. 【数据挖掘】关联规则挖掘 Apriori 算法 ( 关联规则简介 | 数据集 与 事物 Transaction 概念 | 项 Item 概念 | 项集 Item Set | 频繁项集 | 示例解析 )

    文章目录 一. 关联规则挖掘简介 二. 数据集 与 事物 ( Transaction ) 概念 三.项 ( Item ) 概念 四.项集 ( Item Set ) 概念 五.频繁项集 六.数据集.事物 ...

  6. 【数据挖掘】关联规则挖掘 Apriori 算法 ( 置信度 | 置信度示例 )

    文章目录 一. 置信度 二. 置信度 示例 参考博客 : [数据挖掘]关联规则挖掘 Apriori 算法 ( 关联规则简介 | 数据集 与 事物 Transaction 概念 | 项 Item 概念 ...

  7. 《红楼梦》后四十回真假辨析——数据挖掘之关联规则挖掘

    前言 很多人都听说过<红楼梦>的后四十回并非曹雪芹所著.本文就是用关联规则挖掘的方法,验证红楼梦后四十回与前八十回之间的用词差异. 基本概念定义 关联:自然界中某种事物发生时,其他事物也会 ...

  8. 【数据挖掘】关联规则挖掘

    关联规则挖掘 一.基本概念 概念 关联规则挖掘(Association rules mining) 在数据集中找到各项数据之间的关联关系. 项目(Item) ID Items bought 10 A, ...

  9. 数据挖掘之关联规则挖掘的一些定义

    目录 一.算法定义 二.经典例子 三.定义阐述 1.项集(Itemset) 2.事务T与事务集D 3.支持度计数(Support count) 4.支持度(Support) 5.频繁项集(Freque ...

最新文章

  1. python3 得到一个可用未绑定端口
  2. [20180102]11g的V$SORT_USAGE视图.txt
  3. 互联网项目开始时需要去谈的产品需求分析:
  4. 什么是分镜头剧本?(分镜头剧本是将文字转换成立体视听形象的中间媒介。主要任务是根据解说词和电视文学脚本来设计相应画面,配置音乐音响,把握片子的节奏和风格等。)
  5. Codeforces Round #257 (Div. 2) B. Jzzhu and Sequences
  6. ftb测试软件,EXFO推出FTB-2光纤测试平台
  7. JavaFx导出文件
  8. 选择a哪个href以某个字符串结尾
  9. POJ 1125 Stockbroker Grapevine
  10. 蓝桥杯省赛2014年Java组B组
  11. 关于RedisTemplate和StringRedisTemplate
  12. 百会:物联网推动CRM创造新型服务
  13. PostgreSQL如何拼接字符串
  14. youtube-dl 安装和用法
  15. c盘中的软件怎么转到D盘,将c盘软件转移到d盘
  16. 2018年什么编程语言最值得学习
  17. 如何将数据从一台主机发送到另一台主机上(详解)
  18. 沧小海基于xilinx srio核的学习笔记之第二章 Rapidio技术概述
  19. Individual tree detection and estimation of stem attributes with mobile laser scanning along boreal
  20. mysql外键约束失败

热门文章

  1. 希腊匈牙利也能畅快自由行了!搜狗旅行翻译宝新增6种语言翻译
  2. 监督学习、无监督学习、半监督学习、强化学习
  3. 联易融港交所上市:金融、科技一把抓,研发投入不及明源云等
  4. mysql中毒_2020-10-15 MYSQL中勒索病毒解密 .help 病毒解密恢复 数据库中.help 解密恢复 服务器被加密解密恢复...
  5. linux中英文环境的切换
  6. 好了,我摊牌了,B站,牛逼!
  7. uni-app轮播图实现之swiper
  8. 教育机构类企业SEM推广流程
  9. 啥是佩奇?打造Android界佩奇
  10. 关于微盟商城运营策略分析