关联规则和序列模式实验_第1页
关联规则和序列模式实验_第2页
关联规则和序列模式实验_第3页
关联规则和序列模式实验_第4页
关联规则和序列模式实验_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

一、实验目的与要求掌握关联规则和序列模式的基本原理,在此基础上针对给定的数据集,基于C语言编程实现关联规则挖掘算法和序列模式挖掘算法。二、实验内容1令supmin = 30%, 如频繁1项集L1= I1:4, I2:5,I3:4, I4:4, I6:3,请写出其他所有频繁项集。Transaction-idItems boughtt1I1、I2、I3t2I1、I4t3I4、I5t4I1、I2、I4t5I1、I2、I6、I4、I3t6I2、I6、I3t7I2、I3、I62基于C语言编程实现Apriori算法;3. 基于Weka进行数据的准备、预处理及关联规则与序列模式的挖掘三、实验步骤(操作界面截图或程序清单)1. 令supmin = 30%, 如频繁1项集L1= I1:4, I2:5,I3:4, I4:4, I6:3,请写出其他所有频繁项集。Transaction-idItems boughtt1I1、I2、I3t2I1、I4t3I4、I5t4I1、I2、I4t5I1、I2、I6、I4、I3t6I2、I6、I3t7I2、I3、I6解:7*30%=2.1,则最小支持度等于3.频繁2项集:(1)连接得:C2=I1,I2,I1,I3,I1,I4,I1,I6,I2,I3,I2,I4,I2,I6,I3,I4,I3,I6,I4,I6(2)删除得:L2=I1,I2,I1,I4,I2,I3 ,I2,I6,I3,I6频繁3项集:(1)连接得:C3=I1,I2,I4,I2,I3,I6(2)删除得:L3=I2,I3,I62. 基于C语言编程实现Apriori算法代码如下:#includetypedef struct int item100; /数据项 D_Node; /数据库Dtypedef struct int item100; /数据项,用item0保存支持度 C_Node; /候选集typedef struct int item100; /数据项,用item0保存支持度 L_Node;/频繁集C_Node C100100;L_Node L100100;D_Node D100;int min_supp; /最小支持度void InPut() int i,j,n,n1; printf(请输入最小支持度:); scanf(%d,&min_supp); printf(请输入交易集的大小:); scanf(%d,&D0.item0); n=D0.item0; for(i=1;i=n;i+) /for1 printf(请输入交易%d中记录的个数(n):,i); scanf(%d,&n1); Di.item0=n1; for(j=1;j=n1;j+) /for2 printf(请输入交易%d中记录项,直接输入数字:,i); scanf(%d,&Di.itemj); /for2 /for1 /end of InPutvoid C1() /功能:扫描数据集D生成1项候选集C1 /输入:数据集D /输出1项候选集C1 /初始条件 数据集D 非空 int i,j,k; int no=1,temp=0; C10.item0=0; /1 项集的个数,在本算法中,用Cnk.item0来保存候选集Cn的第k项的支持度 if(D0.item0!=0) C11.item1=D1.item1; for(i=1;i=D0.item0;i+) /for1 for(j=1;j=Di.item0;j+) /for2 temp=1; for(k=1;k=no;k+) /for3 if(C1k.item1=Di.itemj) C1k.item0+; /支持度加1 temp=0; / /if /end for3 if(temp)/生成新的项集 C1+no.item1=Di.itemj; C1no.item0=1; /end for2 / end for1 C10.item0=no;/数据项的个数 /end of C1()void Cn( int n) /用频繁集Ln-1为基础,通过连接得到n项候选集Cn int i,j,k,p,q,s,t,num; int no=0,temp=0,count; Cn0.item0=0; /初始化/printf(in Cn(%d) n=%d/n,n,n);/printf(in Cn(%d) C%d0.item0=%d/n,n,n,Cn0.item0);num=Ln-10.item0; /num是Ln-1项集的数据个数 for(i=1;i=num;i+) for(j=i+1;j2)/if 1 for(k=1;kn-1;k+) /for3 if(Ln-1i.itemk!=Ln-1j.itemk) temp=0; break; /if 1 /end for3 /end if1 if(temp=1)/满足联结条件 / printf(in if 2 no=%d/n,no); no+; for(p=1;p=n-1;p+) Cnno.itemp=Ln-1i.itemp; Cnno.itemp=Ln-1j.itemp-1; Cnno.item0=0; for(q=1;q=D0.item0;q+) /for5 测试其支持度 count=0; /count用来记数,当所测试的项存在时,count加1,当count=n时,则子集存在 for(s=1;Cnno.items!=0;s+) /for6 for(t=1;t=Dq.item0;t+) /for7 if(Cnno.items=Dq.itemt) count+=1; break; /end for7 /end for 6 if(count=n) Cnno.item0+=1;/子集存在,第no项的支持度加1 /end for5 Cn0.item0+=1; /end if2 /end for2/end of Cn()void L1() int i,j,k; j=0; L10.item0=0; /printf(C10.item0=%d/n,C10.item0); for(i=1;i=min_supp) j+=1; for(k=1;k=1;k+) L1j.itemk=C1i.itemk; L1j.item0=C1i.item0; / printf(L1%d.item1=%d ,j,L1j.item1); 测试功能时加的 / printf( -%d/n,L1j.item0); /end for1 L10.item0=j;/end of L1()void Ln(int n) int i,j,k; Cn(n); j=0; Ln0.item0=0; / printf(in Ln(%d) C%d0.item0=%d/n,n,n,Cn0.item0); for(i=1;i=min_supp) j+=1; for(k=1;k=n;k+) Lnj.itemk=Cni.itemk; Lnj.item0=Cni.item0; /end if /end for1 Ln0.item0=j; /保存数据的个数/end of Ln(int n) void OutPut(int n) int i,j,k; printf(频繁项目集L%d如下:n,n); k=Ln0.item0; if(k!=0) for(i=1;i=k;i+) printf(); for(j=1;j=n;j+) printf( I%d ,Lni.itemj); printf(t支持度:%dn,Lni.item0); /for else printf(项目集为空n); int main()

温馨提示

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

评论

0/150

提交评论