欢迎来到天天文库
浏览记录
ID:47431671
大小:114.50 KB
页数:7页
时间:2019-09-05
《数据挖掘 副本》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、一、Apriori算法简介Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法。其核心是基于两阶段频集思想的递推算法。该关联规则在分类上属于单维、单层、布尔关联规则。在这里,所有支持度大于最小支持度的项集称为频繁项集,简称频集。 该算法的基本思想是:首先找出所有的频集,这些项集出现的频繁性至少和预定义的最小支持度一样。然后由频集产生强关联规则,这些规则必须满足最小支持度和最小可信度。然后使用第1步找到的频集产生期望的规则,产生只包含集合的项的所有规则,其中每一条规则的右部只有一项,这里采用的是中规则的定义。一旦这些
2、规则被生成,那么只有那些大于用户给定的最小可信度的规则才被留下来。为了生成所有频集,使用了递推的方法。二、Apriori算法步骤1.连接步为找Lk,通过Lk-1与自己连接产生候选k2项目集的集合。该候选项的集合记做Ck。设l1和l2是Lk-1中的项集。记号li[j]表示li的第j项。执行连接Lk-1∞Lk-1其中Lk-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[
3、k-1]2[k-1]。2.剪枝步Ck的成员可以是也可以不是频繁的,但所有的频繁k2项目集都包含在Ck中扫描数据库,确定Ck中每个候选集计数(设置一个标志位Flag)。从而确定Lk。三、Apriori算法演示1.事物数据表扫描D,对每个候选计数2.Apriori算法图解项集比较候选支持度计数与最小支持度计数支持度计数1627364252项集支持度计数1627364252项集扫描D,对每个候选计数由L1产生的候选C21,21,31,41,52,32,42,53,43,54,5项集支持度计数1,241,341,411,522,342
4、,422,523,403,514,50项集支持度计数1,241,341,522,342,422,52比较候选支持度计数与最小支持度计数由L2产生的候选C3项集1,2,31,2,5比较候选支持度计数与最小支持度计数扫描D,对每个候选计数项集支持度计数1,2,321,2,52项集支持度计数1,2,321,2,52一、Apriori算法核心代码1.扫描数据库,对每个候选码进行计数2.比较候选码支持度计数与最小支持度计数3.产生下一步的项集,并进行剪枝核心代码如下:1.//得到的候选集publicclassgetLn{LinkedHa
5、shSetC1;//得到频繁1项集publicLinkedHashSetgetSources(){C1=newLinkedHashSet();LinkedHashSethashSet=newLinkedHashSet();//从数据库中得到值Stringsql="select*fromdatasourse";//事务解析排序while(rs.next()){strings=rs.getString("list").split(",");…………………………………………………………
6、……}//获得支持度计数publicintgetSupcount(Stringitem){//把"1,2"解析成"%1%2%"形式,以便在数据库中计算支持度计数{………………………………………………………………………………}}//得到Ln集合publicLinkedHashMapgettingLn(LinkedHashSetCk2,intmin_support){LinkedHashMapLn=newLinkedHashMap7、度大于最小支持度,则存入Ln中if(sup_count>=min_support)Ln.put(temp[i],sup_count);1.筛选//把Linkedhashset中的项合并成list中的一个元素,即把12变成2,1publicclassJoint{};//连接操作,得到候选集Ck,每个事务的项不超过20个publicLinkedHashSetlink(intk,LinkedHashSetLn){//把Ln中的每个事物解析到hashSet数组中LinkedHashSet[]hashSe8、ts=newLinkedHashSet[Ln.size()];//生成的候选集LinkedHashSetCk=newLinkedHashSet();//得到的候选项Stringcandi_item=newString();//则得到新的候选项//生成了新的候选项,并把候选项放
7、度大于最小支持度,则存入Ln中if(sup_count>=min_support)Ln.put(temp[i],sup_count);1.筛选//把Linkedhashset中的项合并成list中的一个元素,即把12变成2,1publicclassJoint{};//连接操作,得到候选集Ck,每个事务的项不超过20个publicLinkedHashSetlink(intk,LinkedHashSetLn){//把Ln中的每个事物解析到hashSet数组中LinkedHashSet[]hashSe
8、ts=newLinkedHashSet[Ln.size()];//生成的候选集LinkedHashSetCk=newLinkedHashSet();//得到的候选项Stringcandi_item=newString();//则得到新的候选项//生成了新的候选项,并把候选项放
此文档下载收益归作者所有