资源描述:
《数据挖掘实验报告-数据预处理.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、数据挖掘实验报告(一)数据预处理姓名:李圣杰班级:计算机1304学号:1311610602一、实验目的1.学习均值平滑,中值平滑,边界值平滑的基本原理2.掌握链表的使用方法3.掌握文件读取的方法二、实验设备PC一台,dev-c++5.11三、实验内容数据平滑假定用于分析的数据包含属性age。数据元组中age的值如下(按递增序):13,15,16,16,19,20,20,21,22,22,25,25,25,25,30,33,33,35,35,35,35,36,40,45,46,52,70。使用你所熟悉的程序设计语言进行编程,实现如下功能(要求程
2、序具有通用性):(a)使用按箱平均值平滑法对以上数据进行平滑,箱的深度为3。(b)使用按箱中值平滑法对以上数据进行平滑,箱的深度为3。(c)使用按箱边界值平滑法对以上数据进行平滑,箱的深度为3。四、实验原理使用c语言,对数据文件进行读取,存入带头节点的指针链表中,同时计数,均值求三个数的平均值,中值求中间的一个数的值,边界值将中间的数转换为离边界较近的边界值五、实验步骤代码#include#include#include#defineDEEP3#defineDATAFILE"data.tx
3、t"#defineVPT10//定义结构体typedefstructchain{intnum;structchain*next;}*data;//定义全局变量datahead,p,q;FILE*fp;intnum,sum,count=0;inti,j;int*box;voidmean();voidmedain();voidboundary();intmain(){//定义头指针head=(data)malloc(sizeof(structchain));head->next=NULL;/*打开文件*/fp=fopen(DATAFILE,"r"
4、);if(!fp)exit(0);p=head;while(!feof(fp)){q=(data)malloc(sizeof(structchain));q->next=NULL;fscanf(fp,"%d",&q->num);/*读一个数据*/p->next=q;p=q;count++;}/*关闭文件*/fclose(fp);//输出printf("源数据为:");printf("共%d箱%d个数据",count/DEEP,count);p=head->next;count=1;num=1;while(p!=NULL){if(cou
5、nt==1)printf("箱%d:",num);if(count==DEEP){printf("%d",p->num);num++;count=1;}else{printf("%d",p->num);count++;}p=p->next;}mean();medain();boundary();scanf("%d",&i);return0;}//均值voidmean(){printf("均值平滑后为:");box=(int*)malloc(sizeof(int)*num);p=head->next;count=1;num=0;sum=0;
6、while(p!=NULL){if(count==DEEP){count=1;sum=sum+p->num;box[num]=sum/DEEP;sum=0;num++;}else{sum=sum+p->num;count++;}p=p->next;}for(i=0;inext;printf("离群值为:");while(p!=NULL){for(i=0;i7、j=0;jnum-box[i])>(int)VPT){printf("箱%d:",i+1);printf("%d",p->num);}p=p->next;}}}}//中值voidmedain(){printf("中值平滑后为:");p=head->next;count=1;num=0;intmid;while(p!=NULL){if(count==DEEP){box[num]=sum;count=1;num++;}else{if(count==DEEP/2
8、
9、count==DEEP/2+1)i
10、f(DEEP%2){if(count==DEEP/2+1)sum=p->num;}else{if(count==DEEP/2+1)sum=(p->num+mid)/