-
大小: 14.83MB文件類型: .zip金幣: 1下載: 0 次發布日期: 2023-06-14
- 語言: C/C++
- 標簽: ISODATAVC++??
資源簡介
ISODATA算法VC++實現,我用的260個小數點坐標做了測試!能夠實現1.2特快專遞業務(含完整數據)這個程序,為了方便大家下載!把它提供到了網上
代碼片段和文件信息
//?ISODATA.cpp?:?定義控制臺應用程序的入口點。
//
#include?“stdafx.h“
#include?“ISODATA.h“
#include?“Sort.h“
#include?
using?namespace?std;
//?class?ISODATA
extern?int?N;
extern?int?dim;
ISODATA::ISODATA()
{
????c?=?2;??//?預期的類數;
????Nc?=?1;?//?初始聚類中心個數(可以不等于c);
????theta_n?=?2;????//?每一類中允許的最少模式數目(若少于此數,就不能單獨成為一類);
????theta_s?=?1;????//?類內各分量分布的標準差上限(大于此數就分裂);
????theta_D?=?4;????//?兩類中心間的最小距離下限(若小于此數,這兩類應合并);
????L?=?1;??//?在每次迭代中可以合并的類的最多對數;
????I?=?4;??//?允許的最多迭代次數;
????_d?=?100;???????????//?總體平均距離
????Ip?=?0;?????????????//?迭代次數
????
????double?D[MAXNUM][MAXNUM];???//?各類對中心間的距離
????for(int?i=0;i ????????for(int?j=0;j ????????????D[i][j]?=?MAXDOUBLE;
}
ISODATA::~ISODATA()
{
}
//?設置參數
int?ISODATA::SetupPattern(Pattern?*?pattern)
{
????for(int?i=0;i ????????x[i]?=?pattern[i];
????return?N;
}
//?算法實現步驟
int?ISODATA::Process()
{
????bool?changed?=?true;
????//?1.預置
????//?2)將待分類的模式特征矢量x1x2...xn讀入;
????//?SetupPattern();
????
????//?3)選定初始聚類中心,可從待分類的模式特征矢量集{xi}中任選Nc個模式特征矢量作為初始聚類中心zj(j=12...Nc).
????InitCenter();
step1:
????//?1)設定聚類分析控制參數:
????SetupParameter();
step2:
????//?2.按最小距離原則將模式集(xi)中每個模式分到某一類中
????changed?=?false;
????Clustering();
????if(Ip?==?0)
????????cout?<????else
????????cout?<????PrintSort();
step3:
????//?3.依據theta_n判斷合并。如果類wj中樣本數nj ????if(CombinBytheta_n())
????????goto?step2;
step4:
????//?計算分類后的參數:各類中心、類內平均距離及總體平均距離。
????CalParameter();
step5:
????//?依據Ip?Nc?判斷停止\分裂或合并。
????if(Ip?==?I)
????{
????????theta_D?=?0;
????????goto?step9;
????}
????else?if(Nc?<=?c/2)
????????goto?step6;
????else?if(Nc?>=?2*c)
????????goto?step9;
????else?if(Ip%2?==?1)??//Nc>?c/2?&&?Nc?2*c
????????goto?step6;
????else
????????goto?step9;
step6:
????//?計算各類類內距離的標準差矢量
????CalSigma();
step7:
????//?求出每一聚類類內距離標準差矢量sigma中的最大分量sigma_max
????//?CalMaxSigma();???//?由于在Sort類中已進行計算,這里不做任何處理
step8:
????//?判斷分裂
????if(Split())
????{
????????changed?=?true;
????????Ip++;
????????goto?step2;
????}
step9:
????//?計算各類對中心間的距離
????CalCenterDis();
step10:
????//?依據theta_D判斷合并
????if(CombinBytheta_D())
????????changed?=?true;
step11:
????//?判斷循環還是退出
????if(Ip?>=?I)
????{
????????cout?<????????goto?over;
????}
????else?if(changed?==?false)
????{
????????Ip++;
????????cout?<????????goto?over;
????}
????else
????{
????????Ip++;
????????char?ch;
????????cout?<“本次迭代完成,是否需要改變參數(Y/N)?:?“;
????????cin?>>?ch;
????????if(ch?==?‘y‘?||?ch?==?‘Y‘)
????????????goto?step1;
????????else?
????????????goto?step2;
????}
over:???
????PrintSort();
????return?Ip;
}
//?3)選定初始聚
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-05-07?16:00??ISODATA\
?????目錄???????????0??2013-05-07?16:00??ISODATA\Debug\
?????文件??????136192??2013-05-07?15:40??ISODATA\Debug\ISODATA.exe
?????文件??????850708??2013-05-07?15:40??ISODATA\Debug\ISODATA.ilk
?????文件??????977920??2013-05-07?15:40??ISODATA\Debug\ISODATA.pdb
?????文件?????3649024??2013-04-05?23:10??ISODATA\Debug\opencv_core245d.dll
?????文件?????3818496??2013-04-05?23:11??ISODATA\Debug\opencv_highgui245d.dll
?????文件?????3357696??2013-04-05?23:10??ISODATA\Debug\opencv_imgproc245d.dll
?????目錄???????????0??2013-05-07?16:00??ISODATA\ISODATA\
?????目錄???????????0??2013-05-07?16:00??ISODATA\ISODATA\Debug\
?????文件???????11206??2013-05-07?15:40??ISODATA\ISODATA\Debug\CL.read.1.tlog
?????文件????????3400??2013-05-07?15:40??ISODATA\ISODATA\Debug\CL.write.1.tlog
?????文件????????1423??2013-05-07?15:40??ISODATA\ISODATA\Debug\ISODATA.Build.CppClean.log
?????文件??????????95??2013-05-07?15:40??ISODATA\ISODATA\Debug\ISODATA.lastbuildstate
?????文件????????3512??2013-05-07?15:40??ISODATA\ISODATA\Debug\ISODATA.log
?????文件??????240626??2013-05-07?15:40??ISODATA\ISODATA\Debug\ISODATA.obj
?????文件????13631488??2013-05-07?15:40??ISODATA\ISODATA\Debug\ISODATA.pch
?????文件??????220702??2013-05-07?15:40??ISODATA\ISODATA\Debug\MAIN.obj
?????文件???????14284??2013-05-07?15:40??ISODATA\ISODATA\Debug\Pattern.obj
?????文件???????17588??2013-05-07?15:40??ISODATA\ISODATA\Debug\Sort.obj
?????文件????????4074??2013-05-07?15:40??ISODATA\ISODATA\Debug\cl.command.1.tlog
?????文件???????????2??2013-05-07?15:40??ISODATA\ISODATA\Debug\li
?????文件???????????2??2013-05-07?15:40??ISODATA\ISODATA\Debug\li
?????文件???????????2??2013-05-07?15:40??ISODATA\ISODATA\Debug\li
?????文件???????????2??2013-05-07?15:40??ISODATA\ISODATA\Debug\li
?????文件????????2994??2013-05-07?15:40??ISODATA\ISODATA\Debug\li
?????文件????????5978??2013-05-07?15:40??ISODATA\ISODATA\Debug\li
?????文件????????1358??2013-05-07?15:40??ISODATA\ISODATA\Debug\li
?????文件??????155905??2013-05-07?15:40??ISODATA\ISODATA\Debug\stdafx.obj
?????文件??????379904??2013-05-07?15:40??ISODATA\ISODATA\Debug\vc110.idb
?????文件??????536576??2013-05-07?15:40??ISODATA\ISODATA\Debug\vc110.pdb
............此處省略23個文件信息
評論
共有 條評論