数据挖掘中的Apriori算法(C语言版_第1页
数据挖掘中的Apriori算法(C语言版_第2页
数据挖掘中的Apriori算法(C语言版_第3页
数据挖掘中的Apriori算法(C语言版_第4页
数据挖掘中的Apriori算法(C语言版_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、数据挖掘中的Apriori算法(C语言版)/* 这个程序是数据挖掘中的 Apriori 算法 */ #include #include#define D 9 /*D 数事务的个数 */#define MinSupCount 2 /* 最小事务支持度数 */ void main()I1,I2,I3,I4,I5 */* 这里的 a,b,c,d,e 分别代表着书上数据挖掘那章的 char a1010=a,b,e,b,d,b,c,a,b,d,a,c,b,c,a,c,a,b,c,e,a,b,c;char b20,d100,t,b210010,b2110010; inti,j,k,x=0,flag=1,c

2、20=0,x1=0,i1=0,j1,counter=0,c1100=0,flag1= 1,j2,u=0,c2100=0,n20,v=1;int count100,temp;for(i=0;iD;i+)for(j=0;aij!=0;j+)/* 这个循环是用来判断之前保存的是否和 aij 一样,不一样就保存,一样 就不保存 */for(k=0;kx;k+)if(bk!=aij) ;elseflag=0;break;/* 这个 if 是用来判断是否相等 */if(flag=1)bx=aij;x+;else flag=1;/* 这个不保存,那就跳到下一个数 */* 计算筛选出的元素的支持度计数 */f

3、or(i=0;iD;i+)for(j=0;aij!=0;j+)for(k=0;kx;k+)/* 这个 x 是上面 b 数组中元素个数,用 b 数组和 aij 数 组中的每一行和每一列进行比较,用来记录 b 数组每一个元素的支持度计数 */if(aij=bk)ck+;break;/* 对选出的项集进行筛选,选出支持度计数大于 2 的,并且保存到 dx1 数组 中*/for(k=0;k=MinSupCount)dx1=bk;countx1=ck;x1+;/* 对选出的项集中的元素进行排序 */for(i=0;ix1-1;i+)for(j=0;jdj+1)t=dj;dj=dj+1;dj+1=t;te

4、mp=countj;countj=countj+1;countj+1=temp; /* 打印出 L1*/printf(L1 elements are:n);for(i=0;ix1;i+)printf(%c = %d ,di,counti);if(0=(i+1)%3) printf(n);printf(b n);/* 计算每一行的元素个数,并且保存到 n 数组中 */ for(i=0;iD;i+)for(j=0;aij!=0;j+);ni=j;/* 对 a 数组的每一行进行排序 */for(i=0;iD;i+)for(j=0;jni-1;j+)for(k=0;kaik+1)t=aik;aik=a

5、ik+1;aik+1=t;/* 把 L1 中的每一个元素都放在 b2i0中*/j1=x1;for(i=0;ij1;i+)b2i0=di;/*把L1中的元素进行组合,K=2开始,表示x1个元素选K个元素的组合*/ for(k=2;b200!=0;k+) /*u 是用来计数组合总数的 */u=0;v=1;/*v 是用来在进行输出各种组合的标识数 v=1 说明正在进行输出 */ for(i=0;i100;i+)c2i=0;for(i=0;ij1;i+)for(i1=i+1;i1j1;i1+) for(j=0;jk-2;j+)if(b2ij!=b2i1j)flag1=0;break;/* 进行组合的部

6、分 */if(flag1=1&b2ik-2!=b2i1k-2)for(j2=0;j2k-1;j2+)b21uj2=b2ij2;b21uk-1=b2i1k-2;u+;flag1=1;counter=0; for(i1=0;i1u;i1+)/*U for(j1=0;j1k;j1+)/*Kfor(j=0;aij!=0;j+)/*for(i=0;iD;i+)/*a 数组有 5 行元素 */代表 x1 个元素选 K 个元素的所有组合总数 */代表一个组合中的元素个数 */逐个比较每一行的元素 */if(aij=b21i1j1) counter+;if(counter=k) c2i1+; /* 把每种组合数记录在 c2 数组中 */ counter=0; j1=0;temp=0;/* 这里的 temp 是用来分行 */* 对 u 种情况进行选择,选出支持度计数大于 2 的*/ for(i=0;i=MinSupCount) if(v=1)printf(L%d elements are:n,k); v=0; printf();for(j=0;jk;j+)/* 输出每种组合 k 个元素 */ b2j1j=b21ij;printf(%c,b2

温馨提示

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

评论

0/150

提交评论