数据挖掘实验报告-关联规则挖掘

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据挖掘实验报告(二)关联规则挖掘

姓名:李圣杰

班级:计算机1304

学号:1311610602

一、实验目的

1. 1.掌握关联规则挖掘的Apriori算法;

2.将Apriori算法用具体的编程语言实现。

二、实验设备

PC一台,dev-c++5.11

三、实验内容

根据下列的Apriori算法进行编程:

四、实验步骤

1.编制程序。

2.调试程序。可采用下面的数据库D作为原始数据调试程序,得到的候选1项集、2项集、3项集分别为C1、C2、C3,得到的频繁1项集、2项集、3项集分别为L1、L2、L3。

代码

#include

#include

#define D 4 //事务的个数

#define MinSupCount 2 //最小事务支持度数

void main()

{

char a[4][5]={

{'A','C','D'},

{'B','C','E'},

{'A','B','C','E'},

{'B','E'}

};

char

b[20],d[100],t,b2[100][10],b21[100][10];

int

i,j,k,x=0,flag=1,c[20]={0},x1=0,i1=0,j1,counter =0,c1[100]={0},flag1=1,j2,u=0,c2[100]={0},n[ 20],v=1;

int count[100],temp;

for(i=0;i

{

for(j=0;a[i][j]!='\0';j++)

{

//用来判断之前保存的是否和a[i][j]一样,不一样就保存,一样就不保存

for(k=0;k

{

if(b[k]!=a[i][j]) ;

else

{

flag=0;break;

}

}

//用来判断是否相等

if(flag==1)

{

b[x]=a[i][j];

x++;

}

else flag=1;

}

}

//计算筛选出的元素的支持度计数

for(i=0;i

{

for(j=0;a[i][j]!='\0';j++)

{

for(k=0;k

{

if(a[i][j]==b[k])

{

c[k]++;break;

}

}

}

}

//对选出的项集进行筛选,选出支持度计数大于等于2的,并且保存到d[x1]数组中for(k=0;k

{

if(c[k]>=MinSupCount)

{

d[x1]=b[k];

count[x1]=c[k];

x1++;

}

}

//对选出的项集中的元素进行排序

for(i=0;i

{

for(j=0;j

{

if(d[j]>d[j+1])

{

t=d[j];d[j]=d[j+1];d[j+1]=t;

temp=count[j];count[j]=count[j+1];count[j +1]=temp;

}

}

}

//打印出L1

printf("L1 elements are:\n");

for(i=0;i

{

printf("{%c} = %d \n",d[i],count[i]);

}

//计算每一行的元素个数,并且保存到n[]数组中

for(i=0;i

{

for(j=0;a[i][j]!='\0';j++);

n[i]=j;

}

//对a[][]数组的每一行进行排序

for(i=0;i

{

for(j=0;j

{

for(k=0;k

{

if(a[i][k]>a[i][k+1])

{

t=a[i][k];

a[i][k]=a[i][k+1];

a[i][k+1]=t;

}

}

}

}

//把L1中的每一个元素都放在b2[i][0]中

j1=x1;

for(i=0;i

{

b2[i][0]=d[i];

}

//把L1中的元素进行组合,K=2开始,表示x1个元素选K个元素的组合

for(k=2;b2[0][0]!='\0';k++)

{ //u是用来计数组合总数的

u=0;v=1;//v 是用来在进行输出各种组合的标识数v=1 说明正在进行输出

for(i=0;i<100;i++)

{

c2[i]=0;

}

for(i=0;i

{

for(i1=i+1;i1

{

for(j=0;j

{

if(b2[i][j]!=b2[i1][j])

{

flag1=0;break;

}

}

//进行组合的部分

if(flag1==1&&b2[i][k-2]!=b2[i1][k-2])

{

for(j2=0;j2

{

b21[u][j2]=b2[i][j2];

}

b21[u][k-1]=b2[i1][k-2];

u++;

}

flag1=1;

}

}

相关文档
最新文档