資源簡介
層次聚類算法C++ VS2010 調試運行成功

代碼片段和文件信息
#include?“StdAfx.h“
#include?“AgeneCluster.h“
#include?
#include?
#include?
using?namespace?std;
CAgeneCluster::CAgeneCluster(void)
{
}
CAgeneCluster::~CAgeneCluster(void)
{
}
//計算兩個樣本點之間的歐幾里得距離
double?CAgeneCluster::getDistance(sDataPoint?dpAsDataPoint?dpB)
{
????????double?distance=0;??
distance=?pow(dpA.x-dpB.x2)?+?pow(dpA.y-dpB.y2);
????????return?distance;
}
list*?CAgeneCluster::initialCluster(list?*dataPoints)
{
???????list*?originalClusters=new?list?;
???int?i=0;
???????for(list::iterator?iter?=?dataPoints->begin();iter?!=?dataPoints->end();iter++)
???{
???sDataPoint?tempDataPoint=*iter;//取出數據,???
??????????? ???sCluster?tempCluster;
???????tempCluster.clusterLabel=0;
???????tempCluster.datapointList=new?list;
???tempCluster.clusterLabel=i;???????//初始類簇號為各原數據順序號
???tempCluster.datapointList->push_back(tempDataPoint);
??????????//?tempCluster.datapointList.push_back();//每一個數據為一類
???????????originalClusters->push_back(tempCluster);//originalClusters為類簇序列
???i++;
???????}
???????return?originalClusters;
???}
list*??CAgeneCluster::mergeCluster(list*?clustersint?mergeIndexAint?mergeIndexB)//mergeIndexA?B?是類簇標號
???{
???sCluster?tempCluster?tempClusterA?tempClusterB;
???int?nBreak=0;//計算找到的次數,以提前退出循環,節省時間
????????if?(mergeIndexA?!=?mergeIndexB)//分屬于不同的類簇則合并.
{???//?將cluster[mergeIndexB]中的DataPoint加入到?cluster[mergeIndexA]
for(list::iterator?iter?=?clusters->begin();iter?!=?clusters->end();iter++)
?{//把mergeIndexA所在類簇提取出來。
??tempCluster=*iter;//以下程序找出mergeIndexA?and?B所在類簇,并從鏈表中刪除?B類簇。
?if(tempCluster.clusterLabel==mergeIndexA)
{
???nBreak++;//計算找到的次數,以提前退出循環,節省時間
???tempClusterA=?*iter; ????????????????
?}//end?for??if(tempCluster.clusterLabel==mergeIndexA)
???? ?if(tempCluster.clusterLabel==mergeIndexB)
{//并從鏈表中刪除?B類簇。
???? tempClusterB=*iter;
nBreak++;//計算找到的次數,以提前退出循環,節省時間 ???
???????????????? if(clusters->size()==1)
??{
???clusters->erase(iter);
??break;
}
else?if(clusters->size()>1?&&?mergeIndexB==(*--clusters->end(?)).clusterLabel)
??{
???clusters->erase(?--clusters->end(?));
}
else?if(clusters->size()>1?&&??mergeIndexB!=(*--clusters->end(?)).clusterLabel)
{ ?
? iter=clusters->erase(iter);
????if(iter!=clusters->begin())
iter--;
}
?}//end?for??if(tempCluster.clusterLabel==mergeIndexB)
?if(nBreak==2)
?{//找到兩個類簇,則提前退出循環,節省時間。
?nBreak=0;
?break;
?}
} //?end?for?for(list::iterator?iter
list*?dpA?=new?list;
dpA=?tempClusterA.datapointList; //把clusterA中的數據集提取出來。
????????list*?dpB??=new?list;
dpB=?tempClusterB.datapointList;
?for(list::iterator?iter?=?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????81408??2016-06-22?11:29??Hierarchical_Test\Debug\Hierarchical_Test.exe
?????文件?????502208??2016-06-22?11:29??Hierarchical_Test\Debug\Hierarchical_Test.ilk
?????文件?????814080??2016-06-22?11:29??Hierarchical_Test\Debug\Hierarchical_Test.pdb
?????文件???????7004??2012-06-09?21:54??Hierarchical_Test\Hierarchical_Test\AgeneCluster.cpp
?????文件????????781??2012-06-09?20:55??Hierarchical_Test\Hierarchical_Test\AgeneCluster.h
?????文件????????122??2012-06-09?11:14??Hierarchical_Test\Hierarchical_Test\DataPoint.cpp
?????文件????????100??2012-06-09?10:55??Hierarchical_Test\Hierarchical_Test\DataPoint.h
?????文件?????265724??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\AgeneCluster.obj
?????文件???????3306??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\cl.command.1.tlog
?????文件??????24358??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\CL.read.1.tlog
?????文件???????2394??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\CL.write.1.tlog
?????文件???????3552??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\DataPoint.obj
?????文件??????????2??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\Hierarchical_Test.exe.em
?????文件?????????68??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\Hierarchical_Test.exe.em
?????文件?????????64??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\Hierarchical_Test.lastbuildstate
?????文件???????1584??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\Hierarchical_Test.log
?????文件?????125317??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\Hierarchical_Test.obj
?????文件????1179648??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\Hierarchical_Test.pch
?????文件??????????0??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\Hierarchical_Test.write.1.tlog
?????文件????????224??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\Hierarchical_Test_manifest.rc
?????文件???????1776??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\li
?????文件???????3626??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\li
?????文件???????1018??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\li
?????文件????????684??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\rc.command.1.tlog
?????文件????????386??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\rc.read.1.tlog
?????文件????????394??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\rc.write.1.tlog
?????文件??????12135??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\stdafx.obj
?????文件?????371712??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\vc100.idb
?????文件?????339968??2016-06-22?11:29??Hierarchical_Test\Hierarchical_Test\Debug\vc100.pdb
?????文件???????1480??2016-06-22?11:30??Hierarchical_Test\Hierarchical_Test\Hierarchical_Test.cpp
............此處省略19個文件信息
評論
共有 條評論