資源簡(jiǎn)介
用C++編寫的基于層次的聚類算法中的CURE算法

代碼片段和文件信息
/****************************************************************************
*???????????????????????????????????????????????????????????????????????????*
*??CURE?????????????????????????????????????????????????????????????????????*
*???????????????????????????????????????????????????????????????????????????*
*****************************************************************************/
#include?
#include?
#include?
#include?
#include?
#include?
#define?????????SUCCESS?????????1
#define?????????FAILURE?????????0
#define?????????TRUE????????????1
#define?????????FALSE???????????0
#define?????????NUMPATTERNS?????10???//?數(shù)據(jù)點(diǎn)的個(gè)數(shù)
#define?????????SIZEVECTOR??????2?????//?數(shù)據(jù)集的維數(shù)
#define?????????NUMCLUSTERS?????2?????//?類的個(gè)數(shù)
#define?????????NUMPRE??????????3????//?代表點(diǎn)個(gè)數(shù)
#define?????????SHRINK??????????0.5???//?收縮率
//?*****?定義結(jié)構(gòu)和類?*****
struct?ClustNode?{
int??????????Member[NUMPATTERNS];??//類中的數(shù)據(jù)項(xiàng)
int??????????NumMembers;
double???????Means[SIZEVECTOR];??//均值點(diǎn)
double???????Pre[NUMPRE][SIZEVECTOR];//代表點(diǎn)
int??????????PreMember[NUMPRE];//作為代表點(diǎn)的數(shù)據(jù)項(xiàng)
int??????????closet;??//最近的簇
double???????MinDist;//與最近的簇之間的距離
};
class?System?{
private:
double??????Pattern[NUMPATTERNS][SIZEVECTOR];
ClustNode?*p[NUMPATTERNS];
????void????????BuildClustList();?//建立初始簇鏈表
ClustNode?*?Merge(ClustNode?*ClustNode?*);?//合并兩個(gè)簇
int?????????MinClust();????//找到最近的兩個(gè)簇
double??????dist(ClustNode*ClustNode?*);//兩個(gè)簇之間的最短距離
double??????EucNorm(double?*double?*);//代表點(diǎn)之間的距離
void????????ShrinkPre(ClustNode?*);??//收縮代表點(diǎn)
public:
System();
~System();
int?LoadPatterns(char?*fname);??????//?處理數(shù)據(jù)集
void?RunCure();?????????????????????//?聚類的過(guò)程
void?ShowClusters();????????????????//?顯示聚類結(jié)果
};
System::System()
{
}
System::~System()
{
int?i;
for(i=0;i if(p[i]==NULL)
continue;
else
delete?p[i];
}
}
int?System::LoadPatterns(char?*fname){
int????ijlen;
char?buff[300];
char?*ptr*ptr1;
ifstream?infile(fnameios::in);????//將fname打開(kāi)作為輸入
if(!infile){
cout<<“不能打開(kāi)輸入文件:\n“;
return?FAILURE;
}
for(i=0;?i infile.getline(buff300);?????//將300個(gè)字符傳入buff中,buff是指針
len=0;
ptr=buff;
for?(j=0;?j ptr1=strchr(ptr‘‘);???//找出sptr指向的字符串中第一次出現(xiàn)““的位置
*ptr1=‘\0‘;
Pattern[i][j]=atof(ptr);????//將ptr指向的字符串轉(zhuǎn)化為浮點(diǎn)數(shù)
len=strlen(ptr);
ptr=ptr+len+1;
}?/*?endfor?*/
}?/*?endfor?*/
infile.close();
return?SUCCESS;
}
void??System::BuildClustList(){
int?ij;
double?MinDistd;
for(i=0;i p[i]=new?ClustNode;
p[i]->NumMembers=1;
p[i]->Member[0]=i;
p[i]->PreMember[0]=i;
for(j=0;j p[i]->Means[j]=Pattern[i][j];//均值
}
for(j=0;j p[i]->Pre[0][j]=Pattern[i][j]+(SHRINK)*(p[i]->Means[j]-Pattern[i][j]);//計(jì)算代表點(diǎn)
}
}
for(i=0;i p[i]->MinDist=9.9e+99;
for(j=0;j
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????6915??2013-05-24?20:57??CURE算法\cure\cure.cpp
?????文件???????3377??2013-05-24?20:55??CURE算法\cure\CURE.dsp
?????文件????????516??2013-05-24?20:57??CURE算法\cure\CURE.dsw
?????文件??????58368??2013-05-24?20:57??CURE算法\cure\CURE.ncb
?????文件?????198069??2013-05-24?21:06??CURE算法\cure\cure.obj
?????文件??????48640??2013-05-24?20:57??CURE算法\cure\CURE.opt
?????文件???????1196??2013-05-24?20:57??CURE算法\cure\CURE.plg
?????文件?????241708??2013-05-24?20:57??CURE算法\cure\Debug\CURE.exe
?????文件??????23008??2013-05-24?20:57??CURE算法\cure\Debug\cure.obj
?????文件?????607232??2013-05-24?20:57??CURE算法\cure\Debug\CURE.pdb
?????文件??????69632??2013-05-24?20:57??CURE算法\cure\Debug\vc60.pdb
?????文件?????????75??2013-05-11?09:39??CURE算法\cure\iris.data
?????文件?????????98??2013-05-24?18:48??CURE算法\cure\Project1.bpf
?????文件???????3109??2013-05-24?18:48??CURE算法\cure\Project1.bpr
?????文件??????30720??2013-05-24?21:06??CURE算法\cure\Project1.exe
?????文件????????876??2013-05-24?18:06??CURE算法\cure\Project1.res
?????文件?????393216??2013-05-24?21:06??CURE算法\cure\Project1.tds
?????目錄??????????0??2013-06-05?11:34??CURE算法\cure\Debug
?????目錄??????????0??2013-06-05?11:34??CURE算法\cure
?????目錄??????????0??2013-06-04?09:59??CURE算法
-----------?---------??----------?-----??----
??????????????1686755????????????????????20
評(píng)論
共有 條評(píng)論