📄 kmean.cpp
字号:
// kmean.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
typedef struct sample
{
float x;
float y;
} SAMPLE;
float distance(SAMPLE a,SAMPLE b)
{
float d;
float a1=a.x, a2=a.y;
float b1=b.x, b2=b.y;
d=sqrt((a1-b1)*(a1-b1)+(a2-b2)*(a2-b2));
return d;
}
void main()
{
SAMPLE point[20]={{0,0},{1,0},{0,1},{1,1},{2,1},{1,2},{2,2},{3,2},{6,6},{7,6},{8,6},{6,7},{7,7},{8,7},{9,7},{7,8},{8,8},{9,8},{8,9},{9,9}};
SAMPLE center[2];
SAMPLE newcenter[2];
int i;
int flag[20];
int N[2];
center[0]=point[0];
center[1]=point[9];
/*for(i=0;i<20;i++)
printf("(%f,%f)\t",point[i].x,point[i].y);
printf("\n(%f,%f)\t",center[0].x,center[0].y);
printf("\n(%f,%f)\t",center[1].x,center[1].y);*/
while(1)
{
N[0]=0; N[1]=0;
for(i=0;i<20;i++)
{
if(distance(point[i],center[0])<=distance(point[i],center[1])) { flag[i]=0; N[0]++; }
else { flag[i]=1; N[1]++; }
}
newcenter[0].x=0; newcenter[0].y=0;
newcenter[1].x=0; newcenter[1].y=0;
for(i=0;i<20;i++)
{
if(!flag[i])
{
newcenter[0].x=newcenter[0].x+point[i].x;
newcenter[0].y=newcenter[0].y+point[i].y;
}
else
{
newcenter[1].x=newcenter[1].x+point[i].x;
newcenter[1].y=newcenter[1].y+point[i].y;
}
}
newcenter[0].x=newcenter[0].x/N[0];
newcenter[0].y=newcenter[0].y/N[0];
newcenter[1].x=newcenter[1].x/N[1];
newcenter[1].y=newcenter[1].y/N[1];
if((newcenter[0].x==center[0].x)&&(newcenter[0].y==center[0].y)&&(newcenter[1].x==center[1].x)&&(newcenter[1].y==center[1].y))
break;
center[0]=newcenter[0];
center[1]=newcenter[1];
/*printf("center[0]=(%f,%f)\n",center[0].x,center[0].y);
printf("center[1]=(%f,%f)\n",center[1].x,center[1].y);*/
}
printf("the first class:\n");
for(i=0;i<20;i++)
{
if(flag[i]==0)
printf("point[%d]=(%f,%f)\n",i,point[i].x,point[i].y);
}
printf("the class center is (%f,%f)\n",center[0].x,center[0].y);
printf("\n");
printf("the secend class:\n");
for(i=0;i<20;i++)
{
if(flag[i]==1)
printf("point[%d]=(%f,%f)\n",i,point[i].x,point[i].y);
}
printf("the class center is (%f,%f)\n",center[1].x,center[1].y);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -