ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:54.11KB ,
资源ID:20814868      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20814868.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据挖掘Apriori算法报告周一Word格式文档下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据挖掘Apriori算法报告周一Word格式文档下载.docx

1、一个是可能产生大量的候选集,另一个是需要重复扫描数据库.因此如果挖掘数据仓库数据量很大,应用此算法每次迭代产生候选项集用来统计其支持度需要花费很多时间。为了提高算法的效率,国内外专家学者提出的一系列改进算法主要从减少扫描数据库的次数和减少生成候选项目集的数目方面进行优化。从近几年频繁项集挖掘算法的研究趋势来看,为了提高算法的效率,提出了一系列的混合搜索策略和高效剪枝策略。当数据集中所包含的项目个数比较多时,马占欣,陆玉昌提出只有恰当地设置2个额外参数,才能够保证挖掘过程的正常进行,但这样做的代价是可能会遗漏部分包含更多负项目的关联规则。二.关联算法的基本原理该算法的基本思想是:首先找出所有的频

2、集,这些项集出现的频繁性至少和预定义的最小支持度一样。然后由频集产生强关联规则,这些规则必须满足最小支持度和最小可信度。然后使用第1步找到的频集产生期望的规则,产生只包含集合的项的所有规则,其中每一条规则的右部只有一项,这里采用的是中规则的定义。一旦这些规则被生成,那么只有那些大于用户给定的最小可信度的规则才被留下来。为了生成所有频集,使用了递推的方法 / 挖掘频繁1-项集,比较容易2)for (k=2。Lk-1 。k+ 3)Ck = apriori_gen(Lk-1 ,min_sup / 调用apriori_gen方法生成候选频繁k-项集4)for each transaction t D

3、/ 扫描事务数据库D5)Ct = subset(Ck,t6)for each candidate c Ct7)c.count+。 /统计候选频繁k-项集的计数8)9)Lk =c Ck|c.countmin_sup / 满足最小支持度的k-项集即为频繁k-项集10) 11) return L= k Lk。 / 合并频繁k-项集0)三.关联算法的C+简单实现3.1算法数据:对给定数据集用Apriori算法进行挖掘,找出其中的频繁集并生成关联规则。对下面数据集进行挖掘:I1 I2 I5I1 I2I2 I4I1 I2 I4I1 I3I1 I2 I3 I5I1 I2 I3I2 I5I2 I3 I4I3

4、I4对于数据集,取最小支持度minsup=2,最小置信度minconf=0.8。3.2算法步骤:首先单趟扫描数据集,计算各个一项集的支持度,根据给定的最小支持度闵值,得到一项频繁集L1。然后通过连接运算,得到二项候选集,对每个候选集再次扫描数据集,得出每个候选集的支持度,再与最小支持度比较。得到二项频繁集L2。如此进行下去,直到不能连接产生新的候选集为止。对于找到的所有频繁集,用规则提取算法进行关联规则的提取。3.3 C+算法的简单实现首先要在项目名文件夹里自己定义date.txt文档存放数据,然后在main函数中用FILE* fp=fopen(date.txt,r将数据导入算法。定义int

5、countL110。找到各一维频繁子集出现的次数。定义char curL1202。实现出现的一维子集。因为给出的数据最多有4个数,所以同样的我们要定义到4维来放数据。int countL210。 /各二维频繁子集出现的次数char curL2203。 /出现的二维子集int countL310。 /各三维频繁子集出现的次数char curL3204。 /出现的三维子集char cur504。定义int SizeStr(char* m得到字符串的长度。实现代码如下:int SizeStr(char* m int i=0。 while(*(m+i!=0 i+。 return i。比较两个字符串,如

6、果相等返回true,否则返回falsebool OpD(char* x,char* y if(SizeStr(x=SizeStr(y while(*(x+i=*(y+i i+。 if(*(x+i=0 & *(y+i=0 return true。 return false。通过void LoadItemL1(char *p得到所有1元的字串和各自出现的次数void LoadItemL1(char *p int i,j,n=0,k=0。 char ch。 char* s。 int f。 memset(cur,0,sizeof(cur for(i=0。i curL1i0=0。 curL1i1=0。

7、for(j=0。j countL1j=0。 for(j=0。4。 ch=*(*(p+i+j if(ch=0 break。 curn0=ch。 n+。 curL100=cur00。 curL101=cur01。 k=0。50。 if(curi=0 break。 s=curi。 f=1。=k。 if(OpD(s,curL1j f=0。 if(f=1 +k。 curL1k0=curi0。 curL1k1=curi1。 char* m。 m=curL1i。 if(*m=0 if(OpD(m,curj countL1i+。 printf(L1: n 项集 支持度计数n if(curL1i=0 if(co

8、untL1i=2 printf(I%s: %dn,curL1i,countL1i通过void SubItem2(char *p得到所有的2元子串void SubItem2(char *p int i,j,k,n=0。 curL2i0=0。 curL2i1=0。 curL2i2=0。 countL2i=0。 for(k=0。k if(SizeStr(s2 continue。 for(i=0。SizeStr(s for(j=i+1。 if(*(s+j break。 *(curn+0=*(s+i *(curn+1=*(s+j *(curn+2=0。 *(curn+3 n+。通过void LoadIt

9、emL2(char *p得到各个2元频繁子串出现的次数void LoadItemL2(char *p int k,i,j。 SubItem2(p curL200=cur00。 curL201=cur01。 curL202=cur02。 if(OpD(s,curL2j curL2k0=curi0。 curL2k1=curi1。 curL2k2=curi2。 s=curL2i。 if(*s=0 if(OpD(s,curj countL2i+。L2: n if(curL2i=0 if(countL2iI%c,I%c:,curL2i0,curL2i1,countL2i通过定义void SubItem3

10、(char *p得到所有3元的子串void SubItem3(char *p char *s。 int i,j,h,m。 int n=0。 curL3j0=0。 curL3j1=0。 curL3j2=0。 curL3j3=0。 countL3i=0。 for(m=0。m s=*(p+m3 for(h=j+1。h if(*(s+h break。 *(curn+0 *(curn+1 *(curn+2=*(s+h *(curn+3 n+。 同样我们要得到得到各个3元频繁子串出现的次数void LoadItemL3(char* p SubItem3(p curL300=cur00。 curL301=c

11、ur01。 curL302=cur02。 curL303=cur03。 if(OpD(s,curL3j curL3k0=curi0。 curL3k1=curi1。 curL3k2=curi2。 curL3k3=curi3。 s=curL3i。 countL3i+。L3: if(curL3i=0 if(countL3iI%c,I%c,I%c:,curL3i0,curL3i1,curL3i2,countL3i定义void LoadItemL4(char* p得到各个3元子串出现的次数void LoadItemL4(char* p int i。 int j=0。 s=*(p+i=4 j+。四维子集出

12、现的次数:,j没有四维的频繁子集,算法结束!通过void Support(char* w,int g得到关联规则,并输出结果void Support(char* w,int g float c=0.8,d=0。 s=w。 *(curn+0 *(curn+1 *(curn+2 *(curn+3 n+。 for(j=i+1。 if(*(s+j *(curn+0 *(curn+1 *(curn+2 *(curn+3 if(SizeStr(curi=1 for(j=0。 if(OpD(curi,curL1j d=countL3g/(floatcountL1j。 if(d=c printf( %f,cu

13、rL1i,d=2 if(OpD(curi,curL2jcountL2j。 %f n,curL2j0,curL2j1,d最后通过main函数完成整过程序int main(int argc, char* argv int i=0,j=0,k。 char buf106。 char* p10。 memset(buf,0,sizeof(buf FILE* fp=fopen( if(fp=NULL return 0。 ch=fgetc(fp while(ch!=EOF if(ch=0xa | ch=0xd ch=fgetc(fp j=0。 bufij=ch。 j+。 ch=fgetc(fp *(p+k=b

14、ufk。 LoadItemL1(p LoadItemL2(p LoadItemL3(p LoadItemL4(p产生关联规则:非空子集: 置信度:n if(curL3i!=0 & countL3i Support(curL3i,i return 0。3.4程序输出结果:四.学习心得体会关联算法基本原理学习思路简单,只需一步一步找出频集。再通过支持度算出可信度,如对于AC,support=supportA,C),confidence= supportA,C)/supportA)。其中频繁子集的任何子集一定是频繁的,子集频繁父亲一定频繁。相对较难的的部分在于C+代码的实现部分依次实现各个频繁子集,完成整个程序。这学期在商务智能课中学习了数据挖掘的10大算法,数据挖掘十分经典,掌握好一个简单的算法要下很功夫,在今后的工作中一定可以用到,我很庆幸这学期能选到这个课,在这之前听说过数据挖掘但一直没有机会接触,原理容易理解但没接触到以前就没有想过这样考虑问题,学习这个课程以后无论是知识面,智力上都是一个跳跃。还有也提醒我要多复习C+问题的思考,这学期一直忙于网页编程,忘记了上学期说要复习C+数据结构的学习。希望以后还有机会能选到老师的课。申明:所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1