Apriori算法实验报告及程序_第1页
Apriori算法实验报告及程序_第2页
Apriori算法实验报告及程序_第3页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Apriori算法实验报告学号:姓名:专业:计算机应用技术教师:计算机学院目录1 APRIORI 实验 11.1 实验背景 11.1.1 国内外研究概况 11.1.2 发展趋势 11.2 实验内容与要求 21.2.1 实验内容 21.2.2 实验要求 21.2.3 实验目的 22 APRIORI 算法分析与实验环境 32.1 APRIORI 算法的描述 32.2 APRIORI 算法的步骤 32.3 开发环境 42.3.1 软件环境 42.3.2 硬件环境 42.4 本章小结 43 算法的设计 53.1 APRIORI 算法整体框架 53.2 主要的数据结构与函数 53.2.1 数据结构 53

2、.2.2 主要的程序 63.2.3 连接与剪枝操作 73.3 本章小结 74 数据库的设计与数据的来源 84.1 正确性验证数据 84.2 实验数据 94.3 本章小结 95 实验结果与性能分析 105.1 APRIORI 实验界面 1 05.2 实验的正确性验证 105.3 实验性能分析 1 1固定最小支持度改变数据量 1.15.3.2 固定数据量改变最小支持度 1.25.3.3 实验结果分析 1.35.4 本章小结 1 36 总结与体会 151 Apriori 实验1.1 实验背景现在 , 数据挖掘作为从数据中获取信息的有效方法 , 越来越受到人们的重视。关联 规则挖掘首先是用来发现购物篮

3、数据事务中各项之间的有趣联系。从那以后 , 关联规则 就成为数据挖掘的重要研究方向 ,它是要找出隐藏在数据间的相互关系。 目前关联规则挖 掘的研究工作主要包括: Apriori 算法的扩展、数量关联规则挖掘、关联规则增量式更 新、无须生成候选项目集的关联规则挖掘、最大频繁项目集挖掘、约束性关联规则挖掘 以及并行及分布关联规则挖掘算法等。 关联规则的挖掘问题就是在事务数据库 D 中找出 具有用户给定的满足一定条件的最小支持度 Minsup 和最小置信度 Minconf 的关联规 则。1.1.1 国内外研究概况1993 年, Agrawal 等人首先提出关联规则概念,关联规则挖掘便迅速受到数据挖

4、掘领域专家的广泛关注 .迄今关联规则挖掘技术得到了较为深入的发展。 Apriori 算法是 关联规则挖掘经典算法。针对该算法的缺点,许多学者提出了改进算法,主要有基于哈 希优化和基于事务压缩等。1.1.2 发展趋势关联规则挖掘作为数据挖掘的重要研究内容之一 , 主要研究事务数据库、关系数据 库和其他信息存储中的大量数据项之间隐藏的、有趣的规律。关联规则挖掘最初仅限于 事务数据库的布尔型关联规则 , 近年来广泛应用于关系数据库 , 因此 , 积极开展在关系 数据库中挖掘关联规则的相关研究具有重要的意义。 近年来 ,已经有很多基于 Apriori 算 法的改进和优化。研究者还对数据挖掘的理论进行了

5、有益的探索,将概念格和粗糙集应用于关联规则挖掘中,获得了显著的效果。到目前为止,关联规则的挖掘已经取得了令人瞩目的成绩,包括:单机环境下的关联规则挖掘算法;多值属性关联规则挖掘;关联 规则更新算法;基于约束条件的关联规则挖掘;关联规则并行及分布挖掘算法等。1.2 实验内容与要求1.2.1 实验内容编程实现Apriori算法:要求使用a',b ', c',d ',e', f",g ',h',i ",j"10个项目随机产生数据记录并存入数据库。从数据库读取记录进行 Apriori 实验,获得频繁集以及关联 规则,

6、实现可视化。并用课堂上 PPT 的实例测试其正确性。1.2.2 实验要求1 、程序结构:包括前台工具和数据库;2、设定项目种类为 1 0个,随机产生事务,生成数据库;3、正确性验证(可用课堂上的例子) ;4 、算法效率的研究:在支持度固定数据量不同的时候测量运行时间;在数据量固 定,支持度不同的时候测量运行时间;5 、注意界面的设计,输入最小支持度和最小可信度,能够输出并显示频繁项目集 以及关联规则。1.2.3 实验目的1 、加强对 Apriori 算法的理解;2、锻炼分析问题、解决问题并动手实践的能力。2 Apriori 算法分析与实验环境2.1 Apriori 算法的描述Apriori 算

7、法是一种找频繁项目集的基本算法。其基本原理是逐层搜索的迭代:频 繁 K 项 Lk 集用于搜索频繁 (K+1) 项集 Lk+1 ,如此下去,直到不能找到维度更高的频繁 项集为止。这种方法依赖连接和剪枝这两步来实现。算法的第一次遍历仅仅计算每个项 目的具体值的数量,以确定大型 l 项集。随后的遍历,第 k 次遍历,包括两个阶段。首 先,使用在第(k-1)次遍历中找到的大项集Lk-1和产生候选项集Ck。接着扫描数据库, 计算 Ck 中候选的支持度。用 Hash 树可以有效地确定 Ck 中包含在一个给定的事务 t 中的候选。如果某项集满足最小支持度 , 则称它为频繁项集。2.2 Apriori 算法的

8、步骤步骤如下:1 、设定最小支持度 s 和最小置信度 c;2、Apriori 算法使用候选项集。首先产生出候选的项的集合 ,即候选项集 ,若候选项 集的支持度大于或等于最小支持度 ,则该候选项集为频繁项集;3、在 Apriori 算法的过程中 ,首先从数据库读入所有的事务 ,每个项都被看作候选 1- 项集,得出各项的支持度 ,再使用频繁 1-项集集合来产生候选 2- 项集集合 ,因为先验原理 保证所有非频繁的 1- 项集的超集都是非频繁的;4、再扫描数据库 ,得出候选 2- 项集集合 ,再找出频繁 2-项集,并利用这些频繁 2-项集 集合来产生候选 3- 项集;5、重复扫描数据库 ,与最小支持

9、度比较 ,产生更高层次的频繁项集 ,再从该集合里产 生下一级候选项集 ,直到不再产生新的候选项集为止。2.3开发环境软件环境(1) 编程软件:Jdk开发包+eclipse集成开发环境Eclipse是一个开放源代码的、基于 Java的可扩展开发平台。就其本身而言,它 只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括 Java开发工具(Java Development Kit ,JDK)。(2) 数据库软件:SQL Server 2008SQL Server 2008在Microsoft的数据平台上发布,可以组织管理任何数据。可 以将结构化

10、、半结构化和非结构化文档的数据直接存储到数据库中。可以对数据进行查 询、搜索、同步、报告和分析之类的操作。数据可以存储在各种设备上,从数据中心最 大的服务器一直到桌面计算机和移动设备,它都可以控制数据而不用管数据存储在哪 里。(3) 办公软件:Excel 2010Excel是一款试算表办公软件。它是微软办公套装软件office的重要的组成部分,它是集统计分析、数据处理和辅助决策等功能于一身,现在金融、统计财经、管理等众 多领域广泛应用。本实验主要用来为固定数据量改变最小支持数以及固定最小支持数改 变数据量两种情况进行时间分析提供可视化图表。硬件环境装有Windows 7 旗舰版电脑。2.4本章

11、小结本章的内容主要是为了引出本实验的主要算法以及对算法的实现环境做了介绍。3 算法的设计3.1 Apriori算法整体框架Apriori 开始是Apriori 结束图3.1 Apriori实验流程图3.2主要的数据结构与函数数据结构class Tran sacti onpublic int pid; public String itemset;该类表示表中的一条记录。class Daopublic ArrayList<Transaction> Query(String sql)该类用于访问数据库操作。class Kfppublic char kfpstr=new charAprio

12、ri.ITEMSIZE;public int index=-1;public int support=0;public boolean isfp=true;该类代表一个频繁项目。3.2.2 主要的程序Java 中最常用的集合类是 List 和 Map 。 List 的具体实现包括 ArrayList 和 Vector ,它们是可变大小的列表, 比较适合构建、 存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。 HashMap : Map 接口的常用实现类,系统 <key,value> 当成一个整体进行处理,系统总是根据 Hash 算法来计算 <ke

13、y,value> 的 存储位置,这样可以保证能快速存、取 Map 的 <key,value> 对。ArrayList<Transaction> alTransactions :保存表中的所有记录ArrayList<Kfp> alKfpsl :临时存储频繁项目的集合,存储连接后的结果ArrayList<Kfp> SureFpset :保存频繁 k 项集ArrayList<Kfp> SureFpsetPrio :保存频繁 k-1 项集ArrayList<String> notFpList :保存一定不是频繁项目的集合,用

14、于剪枝HashMap<String, Integer> KfpSuppor:频繁项目集及其对应的支持数HashMap<String,Double> guanlianguize: 关联规则及其置信度3.2.3 连接与剪枝操作对于连接操作的两个字符串 (长度为 k) ,它们必须有 k-1 个相同的字符才能做连接 操作。例如 :abc 和 abd 可以连接成 abcd ,abd 和 bcd 可以连接成 abcd ,而 abc 和 ade 就不可以做连接操作。整个连接过程类似归并排序中的归并操作对于任一频繁项目集的所有非空子集也必须是频繁的,反之,如果某个候选的非空 子集不是频

15、繁的,那么该候选集肯定不是频繁的,将其剪枝。3.3 本章小结本章主要介绍了算法设计的整体流程并且也对主要程序和操作作了简要的说明。4 数据库的设计与数据的来源本实验的数据均存储于数据库中。数据库yuzm中共产生6张表。表test为测试用表,用于程序的正确性验证。还有5张表存储随机产生的实验数据。其中数据库的结构如下图所示。e JEBEILJ逛庠壬策囹E) Lj 表+1 口靈统表1+) dboxlatal+l = dbckdata2± 口 dbo.data3+i 二 dbcr.d(ta4-3 二 dbcrdatft53d be .test国LJ枫图 同女词图4.1数据库结构4.1正确性

16、验证数据表test为PPT上的实例,用于正确性验证。数据的item个数为5,其中的九行数 据均由SQL语句产生,表的每一行都是一个“ 0” “ 1 ”的字符串,字符串长度等于商品 种类,其中“ 0”表示该商品不存在,“ 1”表示该商品存在。表的全部数据如图 4.2。iditem0110012Q10103011004110 10510100GOtlM110LDD11101g11100IUL图4.2表 test4.2实验数据5张表是通过算法随机产生的具有不同数据量的数据集,假设商品种类为10种,表的每一行都是一个“ 0”“ 1 ”的字符串,字符串长度等于商品种类,其中“ 0”表示该 商品不存在,“

17、1 ”表示该商品存在。其中表datal共随机产生1万行数据,表data2 产生5万行数据,表data3产生25万行数据,表data4产生50万行数据,表data5 产生75万行数据。部分数据如图4.3iditem1 鹑0011110011ioioinioooohioonuooaoo142OlDlOCllll1430000101100PH1101110011H5lOlOOCOOOOi 餐tcoiuoiii147 1100011000148 OCOOllllll图4.3实验用表(部分)4.3本章小结本章主要对数据库的设计与数据来源做出了说明5 实验结果与性能分析5.1 Apriori实验界面其中可

18、信度可自由设置,默认为 0.7。而支持度记为最小支持度与数据量的比例实验数据可以下拉选择6张表中的任意一张。如下图所示:图5.1实验界面5.2实验的正确性验证运行程序,我们选择表test,即可进行正确性验证,实验结果如下图:图5.2正确性验证最终实验结果与ppt的结果相吻合,表明程序编写正确5.3实验性能分析为了对本程序的实验进行性能分析,我们分别采用固定数据量改变最小支持数以及 固定最小支持数改变数据量两种情况进行时间分析,其中最小置信度设为0.7不变。固定最小支持度改变数据量设支持度为0.2,最小可信度为0.7。具体实验数据量与执行时间如下:表5.1数据量对性能的影响数据量(万行)1525

19、5075时间(秒)48.2128.2366.9623.41032.3固定最小支持度改变数据量1200 52S S0 75数据吕(万行时间f秒)图5.3数据量对性能的影响固定数据量改变最小支持度设实验数据量固定改变最小支持度,具体如下所示:表5.2最小支持度对性能的影响最小支持度0.150.200.250.300.35时间(秒/ 1万)175.64914.28.55.2时间(秒/ 5万)294.1128.258.841.525.7时间(秒/ 25万)531.3366.9246.5185.6154.0固定数据量改变最小支持度A0.150.20.250.30.35最小支持度r时间(t/1万) 时间&

20、amp;/5万) 时间(那/25万)00000000000006 5 4 3 2 1 专K宦fcla图5.4最小支持度对性能的影响实验结果分析由以上实验我们可以看出,实验时间会随着数据量的增大而增大,并且随着最小支持度的增大而减小。并且他们之间的变化类似于某种指数函数的变化趋势。Apriori的时间主要消耗在4个方面:1、利用K频繁集连接产生K+1候选集时,判断连接的条件时比较的次数太多。 假 设项集个数为m的频繁集合Lk,判断连接条件时比较的时间复杂度为 0 (K*m2 )。而 且本实验的m都很大;2、对Ck中任意的一个c的k个(k-1 )子集是否都在Lk-1中。在平均情况下, 对所有候选k

21、项集需要扫描次数为|Ck|*|Lk-1|*k/2 ;3、 为了得到所有的候选频集的支持度,需要扫描N次;4、扫描一次数据库需时间0 (k|T|)。|T|为交易数量,k交易长度5.4本章小结Apriori算法因自身需要多次扫描数据库,并且经过复杂的连接剪枝操作而产生大量候选集以及进行大量的模式匹配计算的缺陷,使得其在I/O上的花费时间很多,从而导致算法的效率不是太高6 总结与体会通过本次实验,让我明白了什么是 Apriori 算法和数据之间的关联性, Apriori 算 法是一种最有影响的挖掘布尔关联规则频繁项集的算法, 为以后进步学习数据挖掘知识 打下了良好的基础。 同时我也更加深刻理解了 A

22、priori 算法的原理及其实现的内部细节, 同时通过实现这一经典的数据挖掘算法, 也让我更深刻的体会到数据挖掘对于知识发现 的重要性,尽管实现了算法,但其中可能还有可以改进的地方,尤其是程序的运行效率 方面。 Apriori 算法实验不仅使得我对该算法的理解更加上升了一个层次,同时也使得 我更加了解了 java 编程语言,使用更加得心应手。public class Apriori extends JFrame implements ActionListener /public static int ITEMSIZE=10; public final int FRAMEWIDTH=800; p

23、ublic final int FRAMEHEIGHT=600; / JPanel up=null;JPanel up_up=null;TextField textFieldName=null;JPanel up_down=null;JPanel up_down_left=null;JLabel conflabel=null;JLabel c1=null;JLabel c2=null;JLabel c3=null;JLabel c4=null;JLabel c5=null;JLabel c6=null;JLabel c7=null;JLabel c8=null;JTextField conf=

24、null;JLabel supportlabel=null;JTextField support=null;下拉框JPanel up_down_right=null;JComboBox jComboBoxDateSize=null;/JButton jButtonMine=null;JPanel down=null;TextArea textArea=null;int fpstep=1;int fpindex=0;Dao dao=null;double MinSupport=0.20;double MinConfi=0.70;double DateSize=9.0;ArrayList<T

25、ransaction> alTransactions=null;ArrayList<Kfp> alKfps=null;ArrayList<String> notFpList=null;ArrayList<Kfp> SureFpset=null;ArrayList<Kfp> SureFpsetPrio=null;HashMap<String, Integer> KfpSupport=null;ArrayList<String> alsurekfpstr=null;HashMap<String,Double>

26、 guanlianguize=null;ArrayList<String> isaddarrStrings=null;int AuxArr=null;public static void main(String args)Apriori A=new Apriori();public Apriori()JPanel up=new JPanel(new GridLayout(2, 1);JPanel up_up=new JPanel(new GridLayout(1, ITEMSIZE);/TextField textFieldName=new TextFieldITEMSIZE;/f

27、or(int i=0;i<ITEMSIZE;i+)/ textFieldNamei=new TextField();/ up_up.add(textFieldNamei);/c1=new JLabel("数 ");up_up.add(c1);c2=new JLabel("据 ");up_up.add(c2);c3=new JLabel("挖");up_up.add(c3);c4=new JLabel("掘 ");up_up.add(c4);c5=new JLabel("实 ");up_up

28、.add(c5);c6=new JLabel("验 ");up_up.add(c6);c7=new JLabel("");up_up.add(c7);c8=new JLabel("Apriori");up_up.add(c8);up_down=new JPanel(new GridLayout(1, 2); up_down_left=new JPanel(new GridLayout(1, 4); conflabel=new JLabel(" 可信度: ");conf=new JTextField();conf.s

29、etText("0.7");supportlabel=new JLabel(" 支持度: "); support=new JT extField();support.setText("0.2"); up_down_left.add(conflabel); up_down_left.add(conf); up_down_left.add(supportlabel); up_down_left.add(support);up_down_right=new JPanel(new GridLayout(1, 2); jComboBoxDate

30、Size=new JComboBox();/ 下拉框 jComboBoxDateSize.addItem("test"); jComboBoxDateSize.addItem("data1"); jComboBoxDateSize.addItem("data2"); jComboBoxDateSize.addItem("data3"); jComboBoxDateSize.addItem("data4"); jComboBoxDateSize.addItem("data5")

31、; jComboBoxDateSize.addActionListener(this);jButtonMine=new JButton(" 开始挖掘 "); jButtonMine.addActionListener(this);up_down_right.add(jComboBoxDateSize); up_down_right.add(jButtonMine);up_down.add(up_down_left);up_down.add(up_down_right);up.add(up_up);up.add(up_down);down=new JPanel(new Bor

32、derLayout() ;textArea=new TextArea();/textArea.setFont(new Font(Font.DIALOG,Font.ITALIC , 20); textArea.setFont(new Font(Font.DIALOG,Font.PLAIN , 20); down.add(textArea);this.setLayout(new BorderLayout();this.setSize(FRAMEWIDTH, FRAMEHEIGHT); this.setLocation(100, 100);this.setSize(this.FRAMEWIDTH,

33、this.FRAMEHEIGHT);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setTitle("Apriori");/up.setSize(this.FRAMEWIDTH, 100);this.add(up,BorderLayout.NORTH);/down.setLocation(0, 100);/down.setSize(this.FRAMEWIDTH, this.FRAMEHEIGHT-100); this.add(down);this.setVisible(true);public void

34、InitDate(String table)fpstep=1;AuxArr=new intITEMSIZE+1ITEMSIZE+1;alKfps=new ArrayList<Kfp>();notFpList=new ArrayList<String>();SureFpset=new ArrayList<Kfp>();SureFpsetPrio=new ArrayList<Kfp>();dao=new Dao();KfpSupport=new HashMap<String, Integer>(); alsurekfpstr=new Ar

35、rayList<String>();guanlianguize=new HashMap<String,Double>();isaddarrStrings=new ArrayList<String>();alTransactions=dao.Query("select * from "+table);this.DateSize=alTransactions.size();public void ShowkFp(ArrayList<Kfp> SureFpset)int steptemp=fpstep;textArea.append

36、(" 频繁 "+(steptemp)+" 项集 rn");for(int i=0;i<SureFpset.size();i+)Kfp k=SureFpset.get(i);int tempindex=k.index;String string=String.copyValueOf(k.kfpstr, 0, +tempindex);int support=KfpSupport.get(string);textArea.append(string+""+support+""+support/DateSize+&q

37、uot;rn")public void ShowkFp2(HashMap<String,Double> SureFpset)textArea.append(" 关联规则 rn");Set<String> keys=(Set<String>) SureFpset.keySet();for(String keyString:keys)textArea.append(keyString+""+SureFpset.get(keyString)+"rn");public void DataMine(

38、)int fpsteptemp=0;if(fpstep = 1)for(int i=0;i<Apriori.ITEMSIZE;i+)Kfp kfp=new Kfp();kfp.kfpstr+kfp.index=(char) ('a'+i);kfp.support=0;kfp.isfp=false;alKfps.add(kfp);DealSupport();SaveNotFpBySupport();SaveSureFp();ShowkFp(alKfps);fpstep+;while(!alKfps.isEmpty()alKfps.clear();for (int i = 0

39、; i < SureFpset.size(); i+)Kfp k1 = SureFpset.get(i);for (int j = i + 1; j < SureFpset.size(); j+) Kfp k2 = SureFpset.get(j);Kfp resultKfp = Joint(k1, k2);int tempindex=resultKfp.index;String string=String.copyValueOf(resultKfp.kfpstr, 0,+tempindex);if(string.charAt(0) = 0)continue;SubSet subS

40、et= new SubSet();ArrayList<String> alStrings=subSet.displaySubSet1(string.toCharArray();int p=0; for(;p<alStrings.size();p+) String string2=alStrings.get(p); if(notFpList.contains(string2) break;if(p != alStrings.size()continue;if (!isaddarrStrings.contains(string) isaddarrStrings.add(strin

41、g); alKfps.add(resultKfp);SureFpsetPrio.clear();for(int i=0;i<SureFpset.size();i+)SureFpsetPrio.add(SureFpset.get(i);Guanlianguize();SureFpset.clear();DealSupport();SaveNotFpBySupport();/ Cut();if (!alKfps.isEmpty()SaveSureFp();ShowkFp(SureFpset); fpstep+;public void Guanlianguize()for(int i=0;i&

42、lt;SureFpsetPrio.size();i+)Kfp k=SureFpsetPrio.get(i);int len = k.index;String string=String.copyValueOf(k.kfpstr, 0, len+1);if(!alsurekfpstr.contains(string)alsurekfpstr.add(string);SubSet s=new SubSet();for(int i=0;i<alsurekfpstr.size();i+)String kfpstr=alsurekfpstr.get(i);char kfpchararr=kfpst

43、r.toCharArray();ArrayList<String> aList=s.SubSet3(kfpchararr,kfpstr.length();for(int j=0;j<aList.size();j+)String guizetemp=""String kfpstr1=aList.get(j);char kfpchararr1=kfpstr1.toCharArray();int indexinkfp=0;int indexinchararr1=0;while(indexinkfp < kfpchararr.length &&

44、; indexinchararr1 < kfpchararr1.length) if(kfpchararr1indexinchararr1 != kfpchararrindexinkfp) guizetemp=guizetemp+kfpchararrindexinkfp; indexinkfp+;elseindexinchararr1+;indexinkfp+;while(indexinkfp < kfpchararr.length)guizetemp=guizetemp+kfpchararrindexinkfp+;double support1=(double)KfpSuppor

45、t.get(kfpstr);double support2=(double)KfpSupport.get(kfpstr1);if(support1/support2 > MinConfi)String temp=kfpstr1+">"+guizetemp;guanlianguize.put(temp,support1/support2);ShowkFp2(guanlianguize);alsurekfpstr.clear();guanlianguize.clear();public Kfp Joint(Kfp k1,Kfp k2)Kfp resultKfp=ne

46、w Kfp();int temp_len=k1.index+1; char temp1=new chartemp_len;char temp2=new chartemp_len;for(int i=0;i<=k1.index;i+)temp1i=k1.kfpstri;temp2i=k2.kfpstri;SubSet s=new SubSet();ArrayList<String> alStrings1=s.SubSet2(temp1,fpstep);ArrayList<String> alStrings2=s.SubSet2(temp2,fpstep); char

47、 result=new chartemp_len+1;boolean flag=false;for(int i=0;i<alStrings1.size();i+)String tempstr=alStrings1.get(i);if(alStrings2.contains(tempstr)int p=0;int q=0;int j=0;while(p != temp1.length && q != temp2.length)temp1p > temp2q)= temp2q)< temp2q)if( p != temp1.length && q

48、!= temp2.lengthresultj+=temp2q;q+;if(p != temp1.length && q != temp2.length && temp1presultj+=temp2q;q+;p+;if(p != temp1.length && q != temp2.length && temp1presultj+=temp1p;p+;&&if(p < temp1.length)while(p!=temp1.length)resultj+=temp1p+;if(q < temp2.len

49、gth)while(q!=temp2.length)resultj+=temp2q+;flag=true;if(flag = true)break;for(int i=0;i<temp_len+1;i+)resultKfp.kfpstr+resultKfp.index=resulti;return resultKfp;public void DealSupport()int len=alTransactions.size();for(int i=0;i<len;i+)Transaction t=alTransactions.get(i);String itemset=t.items

50、et;int num=0;char tempchar=new charITEMSIZE;for(int i1=0;i1<itemset.length();i1+)if(itemset.charAt(i1) = '1')tempcharnum=(char) ('a'+i1);num+;if(num < fpstep)continue;char of1char=new charnum;for(int i3=0;i3<num;i3+)of1chari3=tempchari3;ArrayList<String> alListsunset=n

51、ull;SubSet suSet=new SubSet(); alListsunset=suSet.displaySubSet(of1char, fpstep);for(int p=0;p<alKfps.size();p+)Kfp kfp=alKfps.get(p);int tempindex=kfp.index;+tempindex);String string=String.copyValueOf(kfp.kfpstr, 0,if(alListsunset.contains(string)public void Cut()public void SaveSureFp()for(int

52、 i=0;i<alKfps.size();i+)Kfp k=alKfps.get(i);SureFpset.add(k);int len=k.index;String string=String.copyValueOf(k.kfpstr, 0, len+1);KfpSupport.put(string, k.support);public void SaveNotFpBySupport()for(int i=0;i<alKfps.size();i+)Kfp kfp=alKfps.get(i);double tempSupport=kfp.support/(double)DateSi

53、ze;if(tempSupport < MinSupport)kfp.isfp=false;char tempchar=kfp.kfpstr;String string=String.copyValueOf(tempchar, 0, +kfp.index);notFpList.add(string);alKfps.remove(i);i=i-1;private int Numof1intstr(String str,char of1char)int num=0;char tempchar=new charITEMSIZE;for(int i=0;i<str.length();i+)

54、if(str.charAt(i) = '1')tempcharnum=(char) ('a'+i);num+;of1char=new charnum;for(int i=0;i<num;i+)of1chari=tempchari;if(num < fpstep)return num;elsereturn fpstep;Overridepublic void actionPerformed(ActionEvent e) MinSupport=Double.parseDouble(support.getText();MinConfi=Double.par

55、seDouble(conf.getText();if(e.getSource() = jComboBoxDateSize)String date=jComboBoxDateSize.getSelectedItem().toString();InitDate(date);if(e.getSource() = jButtonMine)textArea.setText("");long start=System.currentTimeMillis();DataMine();long end=System.currentTimeMillis();class Daopublic Connection conn=null;public ResultSet rs=null;public Statement statement=null;public String databasename="yuzm"public ArrayList<Transaction> alTrans

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论