ISODATA算法是在k-均值算法的基础上,增加对聚类结果的'合并'和'分裂'两个操作,并

设定算法运行控制参数的一种聚类算法. 全称:Iterative Selforganizing Data Analysis Techniques Algorithm 即:迭代自组织数据分析算法 '合并'操作:当聚类结果某一类中样本数太少,或两个类间的距离太近时,进行合并. '分裂'操作:当聚类结果某一类中样本某个特征类内方差太大,将该类进行分裂

算法特点

使用误差平方和作为基本聚类准则 设定指标参数来决定是否进行'合并'或'分裂' 设定算法控制参数来决定算法的运算次数 具有自动调节最优类别数k的能力 算法规则明确,便于计算机实现

算法思想

Isodata,迭代自组织分析,通过设定初始参数而引入人机对话环节,并使用归并与分裂

的机制,当某两类聚类中心距离小于某一阈值时,将它们合并为一类,当某类标准差大于

某一阈值或其样本数目超过某一阈值时,将其分为两类.在某类样本数目少于某阈值时,

需将其取消.如此,根据初始聚类中心和设定的类别数目等参数迭代,最终得到一个比较

理想的分类结果.

算法步骤

算法步骤如下: ①初始化  设定控制参数:   c:预期的类数;   Nc:初始聚类中心个数(可以不等于c);   TN:每一类中允许的最少样本数目(若少于此数,就不能单独成为一类

);   TE:类内各特征分量分布的相对标准差上限(大于此数就分裂);   TC:两类中心间的最小距离下限(若小于此数,这两类应合并);   NT:在每次迭代中最多可以进行'合并'操作的次数;   NS:允许的最多迭代次数.   选定初始聚类中心 ②按最近邻规则将样本集{xi}中每个样本分到某一类中 ③依据TN判断合并:如果类ωj中样本数nj< TN,则取消该类的中心zj,Nc=Nc-1,转至② . ④计算分类后的参数:各类重心:类内平均距离及总体平均距离 ⑤判断停止:分裂或合并.  a:若迭代次数Ip =NS,则算法结束;  b:若Nc ≤c/2,则转到⑥ (将一些类分裂);  c:若Nc ≥2c,则转至⑦ (跳过分裂处理);  d:若c/2< Nc<2c,当迭代次数Ip是奇数时转至⑥ (分裂处理);迭代次数Ip是偶

数时转至⑦ (合并处理). ⑥分裂操作  计算各类内样本到类中心的标准差向量 σj=(σ1j, σ2j,…., σnj)T , j=1,2,…

..,Nc  计算其各个分量.  求出每一类内标准差向量σj中的最大分量  若有某一类中最大分量大于TE,同时又满足下面两个条件之一则将该类ωj分裂

为两个类,原zj取消且令Nc=Nc+1.  两个新类的中心zj+和zj-分别是在原zj中相应于的分量加上和减去,而起它分

量不变,其中0<k≤1.  分裂后,Ip=Ip+1, 转至②. ⑦合并操作  计算各类中心间的距离Dij,i=1,2,…,Nc-1; j=1,2,…,Nc  依据TC判断合并.将Dij与TC比较,并将小于TC的那些Dij按递增次序排列,取前

NT个.  从最小的Dij开始,将相应的两类合并,并计算合并后的聚类中心.  在一次迭代中,某一类最多只能合并一次.  Nc=Nc-已并掉的类数. ⑧如果迭代次数Ip=NS或过程收敛,则算法结束.否则,Ip=Ip+1,若需要调整参数,则转至①

;若不改变参数,则转至②;

ISODATA算法的更多相关文章

  1. 聚类算法:ISODATA算法

    1. 与K-均值算法的比较 –K-均值算法通常适合于分类数目已知的聚类,而ISODATA算法则更加灵活: –从算法角度看, ISODATA算法与K-均值算法相似,聚类中心都是通过样本均值的迭代运算来决 ...

  2. 【机器学习】聚类算法:ISODATA算法

    在之前的K-Means算法中,有两大缺陷:       (1)K值是事先选好的固定的值       (2)随机种子选取可能对结果有影响 针对缺陷(2),我们提出了K-Means++算法,它使得随机种子 ...

  3. K-means聚类算法的三种改进(K-means++,ISODATA,Kernel K-means)介绍与对比

      一.概述 在本篇文章中将对四种聚类算法(K-means,K-means++,ISODATA和Kernel K-means)进行详细介绍,并利用数据集来真实地反映这四种算法之间的区别. 首先需要明确 ...

  4. ISODATA聚类算法的matlab程序

    ISODATA聚类算法的matlab程序 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 参考:Kmeans及ISODATA算法的matlab实现 算法 ...

  5. 聚类算法:K-means

    2013-12-13 20:00:58    Yanjun K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大.该算法认为簇是由距离 ...

  6. 视觉机器学习------K-means算法

    K-means(K均值)是基于数据划分的无监督聚类算法. 一.基本原理       聚类算法可以理解为无监督的分类方法,即样本集预先不知所属类别或标签,需要根据样本之间的距离或相似程度自动进行分类.聚 ...

  7. K-MEANS算法总结

    K-MEANS算法 摘要:在数据挖掘中,K-Means算法是一种 cluster analysis 的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法. 在数据挖掘中,K-M ...

  8. 数据挖掘十大经典算法[0]-K-Means算法

    K-Means算法的输入N,K和一个size为N的向量组vector.输出K个两两互不相交的向量组.其本质是将给定的向量组划分成K个类别,使得同类别的向量相似度比较大,而不同类别的向量之间的相似度较小 ...

  9. Kmeans算法的应用实例(Matlab版本)

    K-means是一种经典的聚类算法,是十大经典数据挖掘算法之一.K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类.通过迭代的方法,逐次更新各聚类中心的值,直至得到最 ...

随机推荐

  1. Unity3D研究之Prefab里面的Prefab关联问题

    Unity研究院之Prefab和GameObject的正向和逆向查找引用 我发现很多美工兄弟都爱问程序Unity3d为什么总丢材质? 我不排除U3d有BUG的情况下会丢材质?但是其实很多时候是人为操作 ...

  2. sql分页查询语句

    有关分页 SQL 的资料很多,有的使用存储过程,有的使用游标.本人不喜欢使用游标,我觉得它耗资.效率低:使用存储过程是个不错的选择,因为存储过程是经过预编译的,执行效率高,也更灵活.先看看单条 SQL ...

  3. gem install factory_girl

    文章是从个人博客转过来的,  可以直接访问 iwangzheng.com https://github.com/thoughtbot/factory_girl https://github.com/t ...

  4. B,B+,B-,B*树

    B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: B ...

  5. Ubuntu上如何安装Java,Eclipse,Pydev,Python(自带,不用装),BeautifulSoup

    如何安装Java,如果出于编程的需要安装Java,需要安装的是JDK,而不仅仅是JRE,下面说说如何在Ubuntu下如何安装JDK:只有两步,1.下载并解压,2.配置环境变量1.下载并解压:下载地址: ...

  6. scrapy和selenium结合抓取动态网页

    1.安装python (我用的是2.7版本的) 2.安装scrapy:   详情请参考 http://blog.csdn.net/wukaibo1986/article/details/8167590 ...

  7. 28. 字符串的全排列之第2篇[string permutation with repeating chars]

    [本文链接] http://www.cnblogs.com/hellogiser/p/string-permutation-with-repeating-chars.html [题目] 输入一个字符串 ...

  8. hdu3555

    基本的数位dp #include <cstdio> #include <cstring> using namespace std; #define D(x) x ; long ...

  9. MySQL入门书籍和方法分享

    本文罗列了一些适用于MySQL及运维入门和进阶使用的书籍. 背景:各大论坛上总是有很多同学咨询想学习数据库,或者是为入行DBA做些准备.几年来作为一个MySQL DBA的成长过程有一些积累和感悟,特此 ...

  10. Windows下配置Apache服务器并支持php

    php环境的配置相对来说比较繁琐,网上教程大部分都是放一起说,总体感觉比较乱,其实Apache是一款通用的服务器软件,可以用来配置支持静态页面,php.Python.Java甚至asp等服务端语言,要 ...