数据挖掘 副本new_第1页
数据挖掘 副本new_第2页
数据挖掘 副本new_第3页
数据挖掘 副本new_第4页
数据挖掘 副本new_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、Apriori算法简介Apriori算法是一种最有影响的挖掘 HYPERLINK /view/46060.htm布尔关联规则频繁项集的算法。其核心是基于两阶段频集思想的递推算法。该关联规则在分类上属于单维、单层、布尔关联规则。在这里,所有支持度大于最小支持度的项集称为频繁项集,简称频集。 该算法的基本思想是:首先找出所有的频集,这些项集出现的频繁性至少和预定义的最小支持度一样。然后由频集产生强关联规则,这些规则必须满足最小支持度和最小可信度。然后使用第1步找到的频集产生期望的规则,产生只包含集合的项的所有规则,其中每一条规则的右部只有一项,这里采用的是中规则的定义。一旦这些规则被生成,那么只有

2、那些大于用户给定的最小可信度的规则才被留下来。为了生成所有频集,使用了递推的方法。Apriori算法步骤连接步为找L k , 通过L k- 1与自己连接产生候选k2项目集的集合。该候选项的集合记做Ck。设l1 和l2 是 L k - 1中的项集。记号li j 表示li 的第j 项。执行连接L k - 1L k - 1 其中L k- 1的元素l1 和l2 是可以连接的,如果( l1 1 = l2 1 ) ( l1 2 = l2 2 ) ( l1 k - 2 = l2 k - 2 ) ( l1 k - 1 =l2 k - 1 )连接产生的结果项集是l1 1 l1 2 l1 k - 1 2 k -

3、1 。2剪枝步Ck 的成员可以是也可以不是频繁的,但所有的频繁k2项目集都包含在Ck中扫描数据库,确定Ck 中每个候选集计数(设置一个标志位Flag)。从而确定L k。Apriori算法演示1.事物数据表扫描D,对每个候选计数2Apriori算法图解项集比较候选支持度计数与最小支持度计数支持度计数1627 3642 52项集支持度计数1627 3642 52 项集扫描D,对每个候选计数由L1产生的候选C21,21,31,41,52,32,42,53,43,54,5项集支持度计数1,241,341,411,522,342,422,523,403,514,50项集支持度计数1,241,341,52

4、2,342,422,52比较候选支持度计数与最小支持度计数由L2产生的候选C3项集1,2,31,2,5比较候选支持度计数与最小支持度计数扫描D,对每个候选计数项集支持度计数1,2,321,2,52项集支持度计数1,2,321,2,52Apriori算法核心代码扫描数据库,对每个候选码进行计数比较候选码支持度计数与最小支持度计数产生下一步的项集,并进行剪枝核心代码如下:1./得到的候选集public class getLnLinkedHashSet C1; /得到频繁1项集 public LinkedHashSet getSources() C1 = new LinkedHashSet(); L

5、inkedHashSet hashSet=new LinkedHashSet(); /从数据库中得到值 String sql=select * from datasourse ; /事务解析排序while(rs.next()strings = rs.getString(list).split(,); /获得支持度计数 public int getSupcount(String item) /把1,2解析成 %1%2%形式,以便在数据库中计算支持度计数 /得到Ln集合 public LinkedHashMap gettingLn(LinkedHashSet Ck2,int min_support

6、) LinkedHashMap Ln = new LinkedHashMap= min_support) Ln.put(tempi, sup_count); 筛选 /把Linkedhashset中的项合并成list中的一个元素,即把 1 2 变成2,1public class Joint ;/连接操作,得到候选集Ck,每个事务的项不超过20个 public LinkedHashSet link(int k,LinkedHashSet Ln) /把Ln中的每个事物解析到hashSet数组中 LinkedHashSet hashSets = new LinkedHashSetLn.size();

7、/生成的候选集 LinkedHashSet Ck = new LinkedHashSet(); /得到的候选项 String candi_item = new String(); /则得到新的候选项 /生成了新的候选项,并把候选项放入Ck中 candi_item = change(hashSetsj); Ck.add(candi_item); /把HashMap型数据转换为LinkedHashSet型数据 public LinkedHashSet mapToSet(LinkedHashMap Ln) 3.剪枝/剪枝step Ck为没剪枝前的候选集,Ck2为剪枝后的候选集,Ln为Ln项集 pub

8、lic LinkedHashSet cut(LinkedHashSet Ck,LinkedHashSet Ln) /生成二元子集并剪枝 /分析数组中的每一个字符串:把字符串转换成字符数组,再把字符数组中的两项连接起来 /如:“1,2,3”-1 , 2 ,3 -1,2 1,3 2,3 for (int i = 0; i temp_ck.length; i+) /循环字符串数组 char temp_char = new chartemp_cki.length(); temp_char = temp_cki.toCharArray(); /把字符串转换成字符数组 a:for (int j = 0; j temp_char.length; j+) /循环每个字符串数组,生成二项元素.即检查每个项集if (temp_charj = ,) /若为,,则跳过continue; b:for (int m = j+1; m temp_char.length; m+)if (temp_charm = ,) /若为,,则跳过continue;String sub = String.valueOf(temp_charj) + , + String.valueOf(temp_charm);if(!isIn(sub, temp_ln) /若Ln中没有,则剪枝temp_cki = $

温馨提示

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

评论

0/150

提交评论