• 大小: 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 << endl << “------------- 选取初始聚类中心 ---------------“ << endl;
    else
        cout << endl << “-------------第“ << Ip << “次迭代-------------“ << endl;
    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 << endl << endl << “==========经过“ << Ip << “次迭代,达到迭代次数===========“ << endl;
        goto over;
    }
    else if(changed == false)
    {
        Ip++;
        cout << endl << endl << “==========经过“ << Ip << “次迭代,算法收敛===========“ << endl;
        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\link-cvtres.read.1.tlog
     文件           2  2013-05-07 15:40  ISODATA\ISODATA\Debug\link-cvtres.write.1.tlog
     文件           2  2013-05-07 15:40  ISODATA\ISODATA\Debug\link-rc.read.1.tlog
     文件           2  2013-05-07 15:40  ISODATA\ISODATA\Debug\link-rc.write.1.tlog
     文件        2994  2013-05-07 15:40  ISODATA\ISODATA\Debug\link.command.1.tlog
     文件        5978  2013-05-07 15:40  ISODATA\ISODATA\Debug\link.read.1.tlog
     文件        1358  2013-05-07 15:40  ISODATA\ISODATA\Debug\link.write.1.tlog
     文件      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个文件信息

评论

共有 条评论

相关资源