2022年Apriori算法实验报告及程序.pdf
Apriori算法实验报告及程序Apriori算法实验报告学号: 姓名: 专业: 计算机应用技术教师: 计算机学院精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序目录1 APRIORI实验 . 11、1 实验背景 . 11、1、1 国内外研究概况 . 11、1、2 发展趋势 . 11、2 实验内容与要求 . 11、2、1 实验内容 . 11、2、2 实验要求 . 11、2、3 实验目的 . 12 APRIORI算法分析与实验环境 . 32、1 APRIORI算法的描述 . 32、2 APRIORI算法的步骤 . 32、3 开发环境 . 32、3、1 软件环境 . 32、3、2 硬件环境 . 42、4 本章小结 . 43 算法的设计 . 53、1 APRIORI算法整体框架 . 53、2 主要的数据结构与函数 . 53、2、1 数据结构 . 53、2、2 主要的程序 . 63、2、3 连接与剪枝操作 . 63、3 本章小结 . 64 数据库的设计与数据的来源. 74、1 正确性验证数据. 74、2 实验数据 . 74、3 本章小结 . 85 实验结果与性能分析. 95、1 APRIORI实验界面 . 95、2 实验的正确性验证 . 95、3 实验性能分析 . 105、3、1固定最小支持度改变数据量 . 105、3、2固定数据量改变最小支持度 . 115、3、3实验结果分析 . 115、4 本章小结 . 126 总结与体会 . 13精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序1 Apriori实验1、1 实验背景现在, 数据挖掘作为从数据中获取信息的有效方法, 越来越受到人们的重视。 关联规则挖掘首先就是用来发现购物篮数据事务中各项之间的有趣联系。从那以后 , 关联规则就成为数据挖掘的重要研究方向, 它就是要找出隐藏在数据间的相互关系。目前关联规则挖掘的研究工作主要包括:Apriori算法的扩展、数量关联规则挖掘、 关联规则增量式更新、无须生成候选项目集的关联规则挖掘、最大频繁项目集挖掘、约束性关联规则挖掘以及并行及分布关联规则挖掘算法等。关联规则的挖掘问题就就是在事务数据库D中找出具有用户给定的满足一定条件的最小支持度Minsup 与最小置信度 Minconf 的关联规则。1、1、1 国内外研究概况1993年,Agrawal 等人首先提出关联规则概念, 关联规则挖掘便迅速受到数据挖掘领域专家的广泛关注、迄今关联规则挖掘技术得到了较为深入的发展。Apriori算法就是关联规则挖掘经典算法。 针对该算法的缺点 , 许多学者提出了改进算法, 主要有基于哈希优化与基于事务压缩等。1、1、2 发展趋势关联规则挖掘作为数据挖掘的重要研究内容之一, 主要研究事务数据库、 关系数据库与其她信息存储中的大量数据项之间隐藏的、有趣的规律。关联规则挖掘最初仅限于事务数据库的布尔型关联规则, 近年来广泛应用于关系数据库, 因此, 积极开展在关系数据库中挖掘关联规则的相关研究具有重要的意义。近年来 , 已经有很多基于 Apriori算法的改进与优化。研究者还对数据挖掘的理论进行了有益的探索, 将概念格与粗糙集应用于关联规则挖掘中 , 获得了显著的效果。 到目前为止 , 关联规则的挖掘已经取得了令人瞩目的成绩 , 包括 : 单机环境下的关联规则挖掘算法; 多值属性关联规则挖掘; 关联规则更新算法 ; 基于约束条件的关联规则挖掘; 关联规则并行及分布挖掘算法等。1、2 实验内容与要求1、2、1 实验内容编程实现 Apriori 算法:要求使用 a,b, c, d, e, f , g, h, i, j 10个项目随机产生数据记录并存入数据库。从数据库读取记录进行Apriori实验,获得频繁集以及关联规则,实现可视化。并用课堂上PPT 的实例测试其正确性。1、2、2 实验要求1、程序结构 : 包括前台工具与数据库 ; 2、设定项目种类为 10个, 随机产生事务 , 生成数据库 ; 3、正确性验证 ( 可用课堂上的例子 ); 4、算法效率的研究 : 在支持度固定数据量不同的时候测量运行时间; 在数据量固定 ,支持度不同的时候测量运行时间; 5、注意界面的设计 , 输入最小支持度与最小可信度, 能够输出并显示频繁项目集以及关联规则。1、2、3 实验目的1、加强对 Apriori 算法的理解 ; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序2、锻炼分析问题、解决问题并动手实践的能力。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序2 Apriori算法分析与实验环境2、1 Apriori 算法的描述Apriori算法就是一种找频繁项目集的基本算法。其基本原理就是逐层搜索的迭代:频繁 K项 Lk 集用于搜索频繁 (K+1)项集 Lk+1,如此下去 , 直到不能找到维度更高的频繁项集为止。这种方法依赖连接与剪枝这两步来实现。算法的第一次遍历仅仅计算每个项目的具体值的数量 , 以确定大型 l 项集。随后的遍历 , 第 k 次遍历 , 包括两个阶段。首先 ,使用在第 (k-1) 次遍历中找到的大项集Lk-1 与产生候选项集Ck。接着扫描数据库 , 计算Ck中候选的支持度。用 Hash树可以有效地确定 Ck中包含在一个给定的事务t 中的候选。如果某项集满足最小支持度, 则称它为频繁项集。2、2 Apriori 算法的步骤步骤如下 : 1、设定最小支持度s 与最小置信度 c; 2、Apriori算法使用候选项集。 首先产生出候选的项的集合, 即候选项集 , 若候选项集的支持度大于或等于最小支持度, 则该候选项集为频繁项集 ; 3、在 Apriori算法的过程中 , 首先从数据库读入所有的事务, 每个项都被瞧作候选1- 项集, 得出各项的支持度 , 再使用频繁 1-项集集合来产生候选 2-项集集合 , 因为先验原理保证所有非频繁的1- 项集的超集都就是非频繁的; 4、再扫描数据库 , 得出候选 2-项集集合 , 再找出频繁 2-项集, 并利用这些频繁 2-项集集合来产生候选3-项集; 5、重复扫描数据库 , 与最小支持度比较 , 产生更高层次的频繁项集, 再从该集合里产生下一级候选项集 , 直到不再产生新的候选项集为止。2、3 开发环境2、3、1 软件环境 (1)编程软件 :Jdk 开发包 +eclipse集成开发环境 Eclipse 就是一个开放源代码的、基于Java 的可扩展开发平台。就其本身而言,它只就是一个框架与一组服务, 用于通过插件组件构建开发环境。幸运的就是,Eclipse 附带了一个标准的插件集, 包括 Java 开发工具 (Java Development Kit,JDK)。 (2)数据库软件 :SQL Server 2008 SQL Server 2008 在 Microsoft的数据平台上发布 , 可以组织管理任何数据。可以将结构化、半结构化与非结构化文档的数据直接存储到数据库中。可以对数据进行查询、搜索、同步、报告与分析之类的操作。数据可以存储在各种设备上, 从数据中心最大的服务器一直到桌面计算机与移动设备, 它都可以控制数据而不用管数据存储在哪里。 (3)办公软件 :Excel 2010 Excel就是一款试算表办公 软件。 它就是微软办公套装软件office的重要的组成部分, 它就是集统计分析、数据处理与辅助决策等功能于一身, 现在金融、统计财经、管理等众多领域广泛应用。 本实验主要用来为固定数据量改变最小支持数以及固定最小支持数改变数据量两种情况进行时间分析提供可视化图表。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序2、3、2 硬件环境装有 Windows 7 旗舰版电脑。2、4 本章小结本章的内容主要就是为了引出本实验的主要算法以及对算法的实现环境做了介绍。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序3 算法的设计3、1 Apriori 算法整体框架Apriori 开始定义 minsup、minconfK=1,产生C1扫描数据库,产生 L1生成1项频繁项目集由Lk连接,剪枝产生 Ck+1Ck为空生成关联规则生成频繁项目集扫描,产生 Lk+1Apriori 结束是否图 3、1 Apriori实验流程图3、2 主要的数据结构与函数3、2、1 数据结构class Transaction public int pid; public String itemset; 该类表示表中的一条记录。class Dao 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序public ArrayList Query(String sql) 该类用于访问数据库操作。class Kfp public char kfpstr=new charApriori 、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 接口的常用实现类,系统当成一个整体进行处理 ,系统总就是根据Hash算法来计算 的存储位置,这样可以保证能快速存、取Map 的对。ArrayList alTransactions: 保存表中的所有记录ArrayList alKfpsl: 临时存储频繁项目的集合 ,存储连接后的结果ArrayList SureFpset:保存频繁 k 项集ArrayList SureFpsetPrio:保存频繁 k-1 项集ArrayList notFpList: 保存一定不就是频繁项目的集合,用于剪枝HashMap KfpSuppor:频繁项目集及其对应的支持数HashMap guanlianguize: 关联规则及其置信度3、2、3 连接与剪枝操作对于连接操作的两个字符串(长度为 k),它们必须有 k-1 个相同的字符才能做连接操作。例如:abc与 abd可以连接成 abcd,abd与 bcd可以连接成 abcd,而 abc与 ade就不可以做连接操作。整个连接过程类似归并排序中的归并操作对于任一频繁项目集的所有非空子集也必须就是频繁的,反之 ,如果某个候选的非空子集不就是频繁的 ,那么该候选集肯定不就是频繁的,将其剪枝。3、3 本章小结本章主要介绍了算法设计的整体流程并且也对主要程序与操作作了简要的说明。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序4 数据库的设计与数据的来源本实验的数据均存储于数据库中。数据库yuzm中共产生 6 张表。表 test 为测试用表, 用于程序的正确性验证。还有5 张表存储随机产生的实验数据。其中数据库的结构如下图所示。图 4、1 数据库结构4、1 正确性验证数据表 test为 PPT 上的实例 ,用于正确性验证。数据的item 个数为 5,其中的九行数据均由 SQL 语句产生 ,表的每一行都就是一个“0” “1”的字符串 ,字符串长度等于商品种类 ,其中“ 0”表示该商品不存在 ,“1”表示该商品存在。表的全部数据如图4、2。图 4、2 表 test4、2 实验数据5 张表就是通过算法随机产生的具有不同数据量的数据集, 假设商品种类为10 种,表的每一行都就是一个“ 0” “1”的字符串 , 字符串长度等于商品种类 , 其中“0”表示该商品不存在 , “1”表示该商品存在。其中表data1 共随机产生 1 万行数据 , 表 data2 产生 5 万行数据 , 表 data3 产生 25 万行数据 , 表 data4 产生 50万行数据 , 表 data5 产生 75精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序万行数据。部分数据如图4、3。图 4、3 实验用表 ( 部分)4、3 本章小结本章主要对数据库的设计与数据来源做出了说明。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序5 实验结果与性能分析5、1 Apriori 实验界面其中可信度可自由设置 ,默认为 0、7。而支持度记为最小支持度与数据量的比例。实验数据可以下拉选择6 张表中的任意一张。如下图所示: 图 5、1 实验界面5、2 实验的正确性验证运行程序 ,我们选择表 test,即可进行正确性验证 ,实验结果如下图 : 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序图 5、2 正确性验证最终实验结果与 ppt 的结果相吻合 , 表明程序编写正确。5、3 实验性能分析为了对本程序的实验进行性能分析,我们分别采用固定数据量改变最小支持数以及固定最小支持数改变数据量两种情况进行时间分析,其中最小置信度设为0、7 不变。5、3、1 固定最小支持度改变数据量设支持度为 0、2,最小可信度为 0、7。具体实验数据量与执行时间如下: 表 5、1 数据量对性能的影响数据量 (万行) 1 5 25 50 75 时间(秒) 48、2 128、2 366、9 623、4 1032、3 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序图 5、3 数据量对性能的影响5、3、2 固定数据量改变最小支持度设实验数据量固定改变最小支持度,具体如下所示 : 表 5、2 最小支持度对性能的影响最小支持度0、15 0、20 0、25 0、30 0、35 时间(秒/ 1 万) 175、6 49 14、2 8、5 5、2 时间(秒/ 5 万) 294、1 128、2 58、8 41、5 25、7 时间(秒/ 25 万) 531、3 366、9 246、5 185、6 154、0 图 5、4 最小支持度对性能的影响5、3、3 实验结果分析由以上实验我们可以瞧出,实验时间会随着数据量的增大而增大,并且随着最小支持精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序度的增大而减小。 并且她们之间的变化类似于某种指数函数的变化趋势。Apriori 的时间主要消耗在 4 个方面 : 1、利用 K 频繁集连接产生 K+1 候选集时 ,判断连接的条件时比较的次数太多。假设项集个数为 m 的频繁集合 Lk,判断连接条件时比较的时间复杂度为O(K*m2) 。而且本实验的 m 都很大; 2、对 Ck 中任意的一个 c 的 k 个(k-1)子集就是否都在 Lk-1 中。在平均情况下 ,对所有候选 k 项集需要扫描次数为 |Ck|*|Lk-1|*k/2; 3、为了得到所有的候选频集的支持度,需要扫描 N 次; 4、扫描一次数据库需时间O(k|T|)。|T|为交易数量 ,k 交易长度5、4 本章小结Apriori算法因自身需要多次扫描数据库, 并且经过复杂的连接剪枝操作而产生大量候选集以及进行大量的模式匹配计算的缺陷, 使得其在 I/O 上的花费时间很多 , 从而导致算法的效率不就是太高。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序6 总结与体会通过本次实验 ,让我明白了什么就是Apriori 算法与数据之间的关联性 ,Apriori 算法就是一种最有影响的挖掘布尔关联规则频繁项集的算法,为以后进步学习数据挖掘知识打下了良好的基础。同时我也更加深刻理解了Apriori 算法的原理及其实现的内部细节,同时通过实现这一经典的数据挖掘算法,也让我更深刻的体会到数据挖掘对于知识发现的重要性 ,尽管实现了算法 ,但其中可能还有可以改进的地方,尤其就是程序的运行效率方面。Apriori 算法实验不仅使得我对该算法的理解更加上升了一个层次,同时也使得我更加了解了 java 编程语言 ,使用更加得心应手。import java、awt、BorderLayout; import java、awt、Font; import java、awt、GridLayout; import java、awt、Panel; import java、awt、TextArea; import java、awt、TextField; import java、awt、event、ActionEvent; import java、awt、event、ActionListener; import java、util、ArrayList; import java、util、HashMap; import java、util、Iterator; import java、util、Set; import javax、swing、JButton; import javax、swing、JComboBox; import javax、swing、JFrame; import javax、swing、JLabel; import javax、swing、JPanel; import javax、swing、JTextField; import org、omg、CORBA、PUBLIC_MEMBER; public class Apriori extends JFrame implements ActionListener / public static int ITEMSIZE=10; public final int FRAMEWIDTH=800; public 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; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 15 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序JLabel c4=null; JLabel c5=null; JLabel c6=null; JLabel c7=null; JLabel c8=null; JTextField conf=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 alTransactions=null; ArrayList alKfps=null; ArrayList notFpList=null; ArrayList SureFpset=null; ArrayList SureFpsetPrio=null; HashMap KfpSupport=null; ArrayList alsurekfpstr=null; HashMap guanlianguize=null; ArrayList 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; /for(int i=0;iITEMSIZE;i+) / / textFieldNamei=new TextField(); / up_up、add(textFieldNamei); / c1=new JLabel( 数); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 16 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序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、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、setText(0、7); supportlabel=new JLabel(支持度 :); support=new JTextField(); 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); jComboBoxDateSize=new JComboBox();/下拉框jComboBoxDateSize、addItem(test); jComboBoxDateSize、addItem(data1); jComboBoxDateSize、addItem(data2); jComboBoxDateSize、addItem(data3); jComboBoxDateSize、addItem(data4); jComboBoxDateSize、addItem(data5); 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); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 17 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序down=new JPanel(new BorderLayout() ; 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, 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 InitDate(String table) fpstep=1; AuxArr=new intITEMSIZE+1ITEMSIZE+1; alKfps=new ArrayList(); notFpList=new ArrayList(); SureFpset=new ArrayList(); SureFpsetPrio=new ArrayList(); dao=new Dao(); KfpSupport=new HashMap(); alsurekfpstr=new ArrayList(); guanlianguize=new HashMap(); isaddarrStrings=new ArrayList(); alTransactions=dao 、Query(select * from +table); this、DateSize=alTransactions 、size(); public void ShowkFp(ArrayList SureFpset) int steptemp=fpstep; textArea、append(频繁+(steptemp)+项集rn); /System、out、println(); for(int i=0;iSureFpset、size();i+) Kfp k=SureFpset、get(i); int tempindex=k、index; String string=String、copyValueOf(k、kfpstr, 0, +tempindex); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 18 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序int support=KfpSupport、get(string); textArea、append(string+-+support+-+support/DateSize+rn); /System、out、println(string+rn); public void ShowkFp2(HashMap SureFpset) textArea、append(关联规则 rn); Set keys=(Set) SureFpset 、keySet(); for(String keyString:keys) textArea、 append(keyString+-+SureFpset、 get(keyString)+rn); public void DataMine() int fpsteptemp=0; if(fpstep = 1) for(int i=0;iApriori 、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; 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; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 19 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序String string=String 、copyValueOf(resultKfp 、 kfpstr, 0, +tempindex); if(string、charAt(0) = 0) continue; SubSet subSet= new SubSet(); ArrayList alStrings=subSet、 displaySubSet1(string 、toCharArray(); int p=0; for(;palStrings、size();p+) String string2=alStrings、get(p); if(notFpList 、contains(string2) break; if(p != alStrings、size() continue; if (!isaddarrStrings、contains(string) isaddarrStrings 、add(string); alKfps、add(resultKfp); SureFpsetPrio 、clear(); for(int i=0;iSureFpset、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;iSureFpsetPrio、size();i+) Kfp k=SureFpsetPrio、get(i); int len = k、index; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 20 页,共 30 页 - - - - - - - - - - Apriori算法实验报告及程序String string=String、copyValueOf(k、kfpstr, 0, len+1); if(!alsurekfpstr、contains(string) alsurekfpstr、add(string); SubSet s=new SubSet(); for(int i=0;ialsurekfpstr 、size();i+) String kfpstr=alsurekfpstr、get(i); char kfpchararr=kfpstr、toCharArray(); ArrayList aList=s、SubSet3(kfpchararr,kfpstr 、length(); for(int j=0;jaList 、size();j+) String guizetemp=; String kfpstr1=aList、get(j); char kfpchararr1=kfpstr1、toCharArray(); int indexinkfp=0; int indexinchararr1=0; while(indexinkfp kfpchararr 、 length & indexinchararr1 kfpchararr1、leng