2023年数据挖掘实验报告数据预处理.docx
数据挖掘实验报告(一)数据预解决姓名:李圣杰班级:计算机130 4学号:一、实验目的1 .学习均值平滑,中值平滑,边界值平滑的基本原理2 .掌握链表的使用方法3 .掌握文献读取的方法二、实验设备PC 一台,d ev-c+ + 5. 1 1三、实验内容数据平滑假定用于分析的数据包含属性a ge。数据元组中a ge的值如下(按递增 序):13, 1 5, 1 6 , 1 6 , 19, 2 0 , 2 0, 21, 22, 22, 2 5, 2 5 , 25, 25, 30, 3 3, 3 3, 3 5, 3 5, 35, 3 5, 36, 40, 4 5, 46, 5 2,70。使用你所熟悉的程序设计语言进行编程,实现如下功能(规定程序具有通用性): (a)使用按箱平均值平滑法对以上数据进行平滑,箱的深度为3。(b)使用按箱中值平滑法对以上数据进行平滑,箱的深度为3 o(c)使用按箱边界值平滑法对以上数据进行平滑,箱的深度为3O四、实验原理使用c语言,对数据文献进行读取,存入带头节点的指针链表中,同时计数,均 值求三个数的平均值,中值求中间的一个数的值,边界值将中间的数转换为离边 界较近的边界值五、实验环节代码# i nclude <m a t h . h>#in c 1 ude <s t di o .h>#d e f i ne DEEP 3# i n elude <stdlib.h># d e f i ne DATAF I L E "data.txt"#defi n e VP T 10定义结构体t ypedef struc t c h aini n t num;。struc t cha i n *n e x t ; * data;定义全局变量。d ata he a d ,p,q;F I LE * fp;« in t n um, s um,cou n t=0;i n t i, j ;int *bo x ;void m e a n();void。med a in();void bounda r y();i nt mai n ()定义头指针。he a d=(d a ta) malloc(sizeof(str u ct c hain);he a d ->next= NULL;/*打开文献文/o f p =fopen(DATA F I LE/'r");if(!fp)ex i t (0);p =head;while (!f e of ( f p) ooq=( d ata)malloc(s i z e of(struct chain);q >n e x t=NULL;3 fscanf p % d '&q->num);/大读一个数据* /o p -> n ext=q;p=q;。cou n t+;/*关闭文献*/f c 1 o se (fp);。输出printf(“源数据为:n”);printf(HK%d 箱%(1 个数据n”,c o u nt/DEEP,count);p =he a d-> n ext;,c o unt = l;3 n u m=l;while ( p !=NU L L) » if(c o u nt=l)p r i n t f(" 箱比",1111111);i f (cou n t= = DEEP) p ri n t f ("%dn",p->n u m);«n um +;s » cou n t=l;3 0 o e 1 sepr i n tf("%d " ,p->n u m);«。c ount+;sos p= p->next; o)s mean();medain ();bounds r y();oscanf(r e turn 0;) 0/均值,void me a n()print f (“均值平滑后为:”为o b o x =(int *) mallo c (si z e o f ( i nt) *num);。p= h ead->n e xt;o cou n t=l;num= 0 ;o s u m=0;while(p! =NULL) 。if(co u nt=DEEP) o count=l;。 sum=sum+p-> num;。bo xnum = s um/D EEP;°。 sum=0;,。num+;° e 1 s e (sum= s u m+p >n u m;a c ou n t +;0 s ° p=p->nex t ;。f o r (i=0; i< n um;i+) oop rintf(',nffi%d:">i+l);。f or (j=0; j < D E EP; j+)o printf("%d ",boxi);)。p=hea d->next;o P rin t f ("n 离群值为:”);s whi 1 e( p ! =NU LL) o f o r( i =0;i<num;i+)for (j=0; j <DEEP: j+)。o if( a bs(p>num- box i)>( int)VPT )。叩 rintf ("n 箱:1 i + 1 );oprin t f ("%d ", p->num);0 0 e p=p-> n ext;)中值v o id med a in() o pr i nt f ("n中值平滑后为:“);§ p=head->n ext;count=l;num=0;int mid;while(p! = NULL) if (co u nt = =DEEP)。b o x n um = s um;oc ount = l;。n u m+;。els e « if (coun t = D EE P /21|count=DEEP/2+1)0 i f (DEEP%2) sum=p->n u m;° 。e 1 s e 。 if(cou nt=DEE P/2+1)。sum=(p->num+mid) /2;o else。o mid = p-> n um:,c ount+;)* p =p>n e xt;)for ( i =0; i<num;i+)pr i n t f( " n+for (j=0; j<DE EP; j +)叩 r i ntf ( " %d ,boxi);)/边界值v oi d bo undar y()s P rintf (" n边界值平滑后 为:n");p =he a d-> n e x t ;cou n t= 1 ;» if(count=DEE P / 2 +1)» if(count=DEE P / 2 +1)o bo x = (int * )malloc (s i zeo f (innum=0;。w hile(p!=NULL) oif ( c o u n t =DE EP)。 box 2*n u m+1 =p >num;。count = l:。num+;0 o e lse。 if ( c o un t =1) 3b o x2*num = p->num;。) o cou n t +;。s。p= p ->n e xt;。,p= h ea d ->next:c ount=l;。num= 0 ;。w h i 1 e(p!=NU L L)实验数据文献:data. txt用空格分开1 31 5 16 16 19 20 2 0 21 2 2 2235 36 40 45 46 52 70» if(cou n t=l)。 print f ("箱d: " , num);if ( p - >num - b o x 2 * n um) >(bo x 2 * num+1-p->n u m) o pr i n t f ("%d " , b ox 2 火 num+1);° 。elseo pr i ntf ("%d box 2 *num);s i f (cou n t =DEEP) o p r i ntf("n");coun t =0;n u m+;。coun t +;o o p = p>next;° 2 5 25 2 525 30 33 3335 3 535六、结果截图, CiUwr»WE&»tktopdm,J|-1 .n»comptar p<h>网出,。- ,倍 I。- 出文件名 I CiU,e”李圣亦XeRopd第一次51.exe出大小I m.>S!S<2S K1B- 隆吟傅I 1.0”