#include <iostream>
using namespace std;
#include <cmath>
#define num 20
class Point
{
public:
float x;
float y;
int z;
};
void main()
{
Point point[num];
Point z1,z2,z3,z4;
int num1,num2;
cout<<"请输入"<<num<<"个点"<<endl;
for(int i=0;i<num;i++)
{
cin>>point[i].x;
cin>>point[i].y;
}
z1.x=point[0].x;
z1.y=point[0].y;
z2.x=point[1].x;
z2.y=point[1].y;
z3.x=z3.y=z4.x=z4.y=0;
bool jump;
do
{
num1=num2=0;
for(i=0;i<num;i++)
{
if(((point[i].x-z1.x)*(point[i].x-z1.x))<((point[i].x-z2.x)*(point[i].x-z2.x)))
point[i].z=1;
else
point[i].z=2;
}
for(i=0;i<num;i++)
{
if(point[i].z==1)
{
z3.x+=point[i].x;
z3.y+=point[i].y;
num1++;
}
else if(point[i].z==2)
{
z4.x+=point[i].x;
z4.y+=point[i].y;
num2++;
}
}
z3.x=z3.x/num1;
z3.y=z3.y/num1;
z4.x=z4.x/num2;
z4.y=z4.x/num2;
jump=((z1.x!=z3.x)||(z1.y!=z3.y)||(z2.x!=z4.x)||(z2.y!=z4.y));
z1.x=z3.x;
z1.y=z3.y;
z2.x=z4.x;
z2.y=z4.y;
}while(jump);
cout<<"以下为一类:"<<endl;
for(i=0;i<num;i++)
{
if(point[i].z==1)
cout<<"样本"<<i+1<<"\t";
}
cout<<endl<<"以下为一类:"<<endl;
for(i=0;i<num;i++)
{
if(point[i].z==2)
cout<<"样本"<<i+1<<"\t";
}
}
可以很好的实现K均值聚类
1星 需积分: 9 25 浏览量
2009-11-28
12:17:30
上传
评论
收藏 867KB RAR 举报
huangxiaojing28
- 粉丝: 0
- 资源: 1
最新资源
- 双H桥电机驱动L298N芯片AD集成库ALTIUM库(原理图库+PCB封装库)文件.zip
- 555springboot + vue 线上教学平台.zip(可运行源码+数据库文件+文档)
- 554springcloud + vue 房产销售平台.zip(可运行源码+数据库文件+文档)
- 小霸王坦克游戏源码.7z
- 蓝桥杯单片机基础学习项目(LED,数码管,蜂鸣器,继电器,按键控制)
- 553springboot + vue 某银行OA系统.zip(可运行源码+数据库文件+文档)
- DatabaseWatermarkingBasedonTextFormat
- yolov8常用二维码检测检测+数据集
- -移动通信-网络课程设计与研究
- 基于Python的PCA人脸识别算法的原理及实现代码+文档详解.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈