资源简介
CURE算法 Clustering Using REpresentatives。 聚类经典算法之一,matlab实现。
代码片段和文件信息
#include
#include
#include
#include
#include
int xyzminrowmincol;
int kijclassno[150];
double s[150][4];
double minresult;
double d[150][150];
int cla[150][150]={0};
int circle=0;
int Num[150];
void minarr() /* 输出数组中最小值的下标*/
{
// int min= a[0][0];
// minrow=mincol=0;
min=100;
for(i=0;i<149;i++)
{
if(Num[i]!=0)
{
for(j=i+1;j<150;j++)
{
if(Num[j]!=0)
{
if(d[i][j] {
min=d[i][j];
x=i;
y=j;
//x=minrow;
// y=mincol;
}
}
}
}
}
}
double ddist(int aint b) /*求两个数组的距离*/
{
result=0;
for(int aa=0;aa<3;aa++)
result+=(s[a][aa]-s[b][aa])*(s[a][aa]-s[b][aa]);
return sqrt(result);
}
void classn() /*分类 合并*/
{
for(i=0;i<149;i++)
{
if(Num[i]!=0)
{
for(j=i+1;j<150;j++)
{
if(Num[j]!=0)
d[i][j]=ddist(ij);
}
}
}
minarr();
i=x; /* minarr(d[i][j]);*/
j=y; /* minarr(d[i][j]);*/
classno[j]=i;
Num[j]=0;
int e=0;
int n=0;
while(cla[i][n])
{
n++;//cla[i]同类的数据有n组
}
cla[i][n++]=j; /* 每个类中的样本标号(不包括第一个)*/
int f=0;
while(cla[j][f])
{
classno[cla[j][f]]=i;
cla[i][n++]=cla[j][f];
f++;
}
int h;
/*for(h=j;h<150-circle;h++)
{
for(int hh=0;hh<4;hh++)
{
s[h][hh]=s[h+1][hh];
}
}*/
for(h=0;h<4;h++)
s[i][h]=(s[i][h]*(n+1)+s[j][h]*(f+1))/(n+f+2);
//s[j]=s[150-k-1]; /*把合并的后一个数用尽量的最后一个数代替*/
// circle++;
}
void main()
{
for(i=0;i<150;i++)
for(j=0;j<150;j++)
{
d[i][j]=10000;
}
for(i=0;i<150;i++)
classno[i]=i;
for(i=0;i<150;i++)
{
Num[i]=1;
}
ifstream dataread; //读文件
dataread.open(“iris.txt“);
for(i=0;i<150;i++)
{
for(j=0;j<4;j++)
{
dataread>>s[i][j];
cout< }
cout< }
for(k=0;k<147;k++)
{
classn();
}
for(i=0;i<150;i++)
{
cout< }
//定义输出流,将分类信息输出到文本文档中
ofstream outFile;
outFile.open(“result2.txt“);
for(i=0;i<150;i++)
{
for(j=0;j<4;j++)
{
outFile< }
outFile<<“ 所属分类: “;
outFile< // outFile<<“ “< }
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2412 2009-12-29 13:03 cure\cure.cpp
文件 2548 2010-01-10 15:41 cure\iris.txt
目录 0 2010-01-12 11:17 cure
----------- --------- ---------- ----- ----
4960 3
评论
共有 条评论