⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 程序说明.txt

📁 模式识别中的isodata算法
💻 TXT
字号:
                 ISODATA文件包说明:各文件主要功能及内容。

一、
ISODATA为主函数,step2.m, step3.m, step8.m, step11.m, fig_isodata.m为脚本文件,其余为自定义函数。

可调整参数:
K,      期望分类类数,最终类数在[K,2*K]之间;
theta_n,类内样本数小于theta_n则取消该类;
theta_s,类内标准偏差大于theta_s,分裂该类;
theta_c,类间聚心距离大于theta_c,合并这两类;
L,      每次最多的合并类数;
I,      迭代次数。

二、
step2.m 

变量s起到了类似数据库的作用,存储各种分类信息。
s的类型定义为细胞变量(cell)。
计算所有样本到初始给定聚心的距离。
mindistance.m求出每个样本点到所有聚心的距离,并找到最小的分为该类。
更新各类聚心。
s的第一行存储每个类的聚心坐标。
s的第二行存储该类的所有样本坐标。/*采用了往原有该类样本后加样本的方式,每次分类前需先清空*/
inclassdistance.m求出一类样本的类内距离,存储在s的第三行。
求出总的样本距离,即所有样本类内距离的均值,d_avg
求出每类中的样本个数,存入s的第五行。
将每行的物理意义存入s的最后一列,以方便使用。
算出各类的均方差,存入s的第四行。
此时,std(s{2,k},1,1)中,最后一个参数为方差类型,0表示方差的无偏估计,
1是我们想要得到的标准偏差。
所以step2.m包含了ISODATA中的2,4,5,6,8步。
每步计算前都需判断属于该类的样本数是否为零。

三、
step3.m

如果类内样本个数小于给定参数theta_n,将该类删除,重新聚类。

四、
step8.m (分裂)


第9步,计算各类中,不同维偏差的最大值。
第10步,满足分裂要求的,分成两个心类。
更新Z,c,J,并用step2更新各类的信息。
包含了ISODATA中的9,10步。

五、
step11.m   (合并)、

构造距离矩阵ctr_dist。为三角阵,下半边为零。其中元素为聚心间距离,如ctr_dist(2,4)表示第2个聚心预第4个聚心的距离。
选出最小的L个距离所对应的类,存入Min_Dist_Ctr,Min_Dist_Ctr的第1行表示最小距离的两类,如Min_Dist_Ctr(1,:)=[2 4],则表示2,4两类聚心最近。每次选出1个后,用Inf代替原距离值,依次类推可得到L个最近聚心。

注:由于编程困难(还有为了合并样本时方便,偷个懒:P),对Min_Dist_Ctr进行处理,不进行超过2类的合并。如Min_Dist_Ctr=[2 5;1 3;2 7],则将2,7两类的合并取消。与原ISODATA略有区别。

作者:冯硕 2007.04.16.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -