资源简介
根据欧式距离 将随即生成的点进行自动分类 有界面
代码片段和文件信息
#include
#include
#include
#include
#include “math.h“
typedef struct CPoint{
unsigned int num;
double x;
double y;
}Cpoint ;
double Distance( Cpoint &Cpoint &);
bool Rw(CPoint &Cpoint &);
Cpoint ComputeCndt(Cpoint a[]int n);
bool Rw_k(Cpoint newd[]Cpoint oldd[]short Numk);
void initSumdot(short Numk);
void ChangeCntd(Cpoint newd[]Cpoint oldd[]short Numk);
CPoint Sumdot[30][500];
short count[30];
CPoint Clscntdt[30];
int main()
{
CPoint Srandot[500];
Cpoint oldd[30];
int Rdot1Rdot2;
srand( (unsigned)time( NULL ) );
short K;
cout<<“要分几类:(0~30)“< cin>>K;
initSumdot(K);
//初始化随机数据
for (int i=0;i<500;i++)
{
Srandot[i].num=i;
Srandot[i].x=rand()%1000;//
Srandot[i].y=1000*rand()/RAND_MAX;
}
for (i=0;i<500;i++)
{
cout< }
//初始化中心点
for(i=0;i {
Rdot1=rand()%500;
Rdot2=rand()%500;
while(Rdot1==Rdot2)
{
Rdot2=rand()%500;
}
Clscntdt[i]=Srandot[Rdot1];
oldd[i]=Srandot[Rdot2];
count[i]=0;
}
double Dsts[30]tem=0;
int m=0;
short num=0;
while(Rw_k(Clscntdt olddK))
{
int j;
initSumdot(K);
ChangeCntd(ClscntdtolddK);
for (i=0;i {
count[i]=0;
}
for( j=0;j<500;j++)
{
for(int i=0;i {
Dsts[i]=Distance(Srandot[j]oldd[i]);
}
tem=Dsts[0];
for(i=0;i {
if (tem>=Dsts[i])
{
tem=Dsts[i];
num=i;
}
}
Sumdot[num][count[num]]=Srandot[j];
count[num]++;
}
//计算中心点
for ( m=0;m {
Clscntdt[m].num=Sumdot[m][0].num;
for (int i=0;i {
Clscntdt[m].x+=Sumdot[m][i].x;
Clscntdt[m].y+=Sumdot[m][i].y;
}
if(count[m]!=0){
Clscntdt[m].x/=count[m];
Clscntdt[m].y/=count[m];}
}
}
for(i=0;i {
cout< cout< }
return 0;
}
double Distance( Cpoint &aCpoint &b)
{
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
bool Rw(CPoint &aCpoint &b)
{
if(a.x!=b.x || a.y!=b.y )
return 1;
else return 0;
}
bool Rw_k(Cpoint newd[]Cpoint oldd[]short Numk)
{
for (int i=0;i {
if (Rw(newd[i]oldd[i]))
return 1;
else return 0;
}
}
void ChangeCntd(Cpoint newd[]Cpoint oldd[]short Numk)
{
for(int i=0;i oldd[i]=newd[i];
}
void initSumdot(short Numk)
{
for (int i=0;i {
for (int j=0;j<500;j++)
{
Sumdot[i][j].x=0;
Sumdot[i][j].y=0;
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 245853 2010-12-18 09:55 二维聚类分析\Debug\二维类分析.exe
文件 2725 2010-12-19 21:32 二维聚类分析\二维类分析.cpp
文件 3451 2010-12-16 20:28 二维聚类分析\二维类分析.dsp
文件 545 2010-12-16 20:28 二维聚类分析\二维类分析.dsw
文件 41984 2010-12-18 09:56 二维聚类分析\二维类分析.ncb
文件 48640 2010-12-18 09:56 二维聚类分析\二维类分析.opt
文件 768 2010-12-18 09:55 二维聚类分析\二维类分析.plg
目录 0 2010-12-18 18:35 二维聚类分析\Debug
目录 0 2010-12-18 18:38 二维聚类分析
----------- --------- ---------- ----- ----
343966 9
- 上一篇:计算机算法分析试卷两套有答案
- 下一篇:统一用户及权限管理系统需求分析
相关资源
- 聚类分析,多元统计分析
- 基于weka的数据聚类分析实验
- ISODATA聚类分析,对BMP图片操作
- Kmeans方法做点的聚类分析,并且画图
- 聚类分析文献综述
- 聚类分析的详解--关于聚类分析的
- 因子分析+聚类分析.R
- 应用多元统计聚类分析
- 聚类分析常用数据集
- 模糊聚类分析图的k截距程序
- spss之聚类分析--移动
- 基于因子分析和聚类分析的技术创新
- 基于SOM神经网络的聚类分析
- NTSYS pc聚类分析使用方法(容易错的用
- 数据挖掘聚类分析技术实验常用真实
- [R语言] 快速搭建网站——使用shiny实
- NTsys 2.10e.rar聚类分析软件
- R语言生成决策树
- 聚类分析和支持向量机在股票研究中
- 马氏距离计算的关键问题解析
评论
共有 条评论