关联规则和序列模式实验(共12页)

上传人:文库****9 文档编号:209739898 上传时间:2021-11-11 格式:DOCX 页数:12 大小:85.37KB
返回 下载 相关 举报
关联规则和序列模式实验(共12页)_第1页
第1页 / 共12页
关联规则和序列模式实验(共12页)_第2页
第2页 / 共12页
关联规则和序列模式实验(共12页)_第3页
第3页 / 共12页
关联规则和序列模式实验(共12页)_第4页
第4页 / 共12页
关联规则和序列模式实验(共12页)_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《关联规则和序列模式实验(共12页)》由会员分享,可在线阅读,更多相关《关联规则和序列模式实验(共12页)(12页珍藏版)》请在金锄头文库上搜索。

1、精选优质文档-倾情为你奉上一、实验目的与要求掌握关联规则和序列模式的基本原理,在此基础上针对给定的数据集,基于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进行数据的准备、预处理及关联规则与序列模式的挖

2、掘三、实验步骤(操作界面截图或程序清单)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,

3、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_Nod

4、e 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);

5、 /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

6、(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

7、,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=

8、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;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号