⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c junzhi.cpp

📁 模式识别中关于C均值的聚类算法的程序,输入点进行聚类.
💻 CPP
字号:
#include "stdio.h"
#include "math.h"


int x[20][2],y[20][2],z[20][2];
float a[2],b[2],a1[2],b1[2];
void main()
{
int i,j,k,temp=1;
float d1,d2;

x[0][0]=180;    x[0][1]=80;   
x[1][0]=158;    x[1][1]=46;  
x[2][0]=184;    x[2][1]=78;   
x[3][0]=156;    x[3][1]=45;  
x[4][0]=178;    x[4][1]=75;   
x[5][0]=182;    x[5][1]=74;   
x[6][0]=190;    x[6][1]=81;   
x[7][0]=158;    x[7][1]=46;  
x[8][0]=155;    x[8][1]=42;  
x[9][0]=159;    x[9][1]=44;  
x[10][0]=179;   x[10][1]=63;  
x[11][0]=156;   x[11][1]=47; 
x[12][0]=157;   x[12][1]=48; 
x[13][0]=179;   x[13][1]=70;  
x[14][0]=154;   x[14][1]=50;   



x[15][0]=150;   x[15][1]=40;  
x[16][0]=180;   x[16][1]=76;  
x[17][0]=153;   x[17][1]=45; 
x[18][0]=185;   x[18][1]=75;  


a[0]=180;      a[1]=80;        //初始聚类中心  
b[0]=158;      b[1]=46;    

a1[0]=0;       a1[1]=0;    
b1[0]=0;       b1[1]=0;    


while(temp==1)
{
	i=0;j=0;k=0;
	do{
   
	d1=sqrt((x[i][0] - a[0])*(x[i][0] - a[0])  +  (x[i][1] - a[1])*(x[i][1] - a[1])); 
    d2=sqrt((x[i][0] - b[0])*(x[i][0] - b[0])  +  (x[i][1] - b[1])*(x[i][1] - b[1]) );  
	if(d1<d2) 
	{                                    //按D分类 
		y[j][0]=x[i][0];
     	y[j][1]=x[i][1];
	   
		j++;
	}
	   else
	   { 
		z[k][0]=x[i][0];
     	z[k][1]=x[i][1];
	   
		k++;
	   }
	i++;
	}while(i<=14);

	for(i=0;i<=j;i++)
	{
     	a1[0]=a1[0]+y[i][0];
		a1[1]=a1[1]+y[i][1];
	
	}
	a1[0]=a1[0] / j;    	
	a1[1]=a1[1] / j;  	 


	for(i=0;i<=k;i++)
	{
     	b1[0]=b1[0]+z[i][0];
		b1[1]=b1[1]+z[i][1];
	
	}

	b1[0]=b1[0] / k;
	b1[1]=b1[1] / k;
  

	if( (a1[0]==a[0]) && (a1[1]==a[1]) && (b1[0]==b[0]) && (b1[1]==b[1])  ) 
		  temp=0;	
    
	a[0]=a1[0];   a[1]=a1[1];   
    b[0]=b1[0];   b[1]=b1[1]; 
	
	a1[0]=0;   a1[1]=0;    
    b1[0]=0;   b1[1]=0; 
}

printf("已知的模式向量:\n");
for (i=0;i<=14;i++)
{
printf("x[%d]: %d %d\n",i,x[i][0],x[i][1]);

}



printf("待分类的模式向量:\n");
for (i=15;i<=18;i++)
{
printf("x[%d]: %d %d\n",i,x[i][0],x[i][1]);

}
printf("\n");
printf("体操类的聚类中心为:%f   %f\n",a[0],a[1]);
printf("蓝球类的聚类中心为:%f   %f\n",b[0],b[1]);
printf("\n");

printf("分类结果为:\n");

for(i=15;i<=18;i++)
{
  
	d1=sqrt((x[i][0]-a[0])*(x[i][0]-a[0]) + (x[i][1]-a[1])*(x[i][1]-a[1]) );
    d2=sqrt((x[i][0]-b[0])*(x[i][0]-b[0]) + (x[i][1]-b[1])*(x[i][1]-b[1]) );
	if(d1<d2) printf("x[%d]属于篮球队员\n",i);                           
	       else   printf("x[%d]属于体操队员\n",i);
}


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -