《基于isodata算法的Iris数据分类29918.docx》由会员分享,可在线阅读,更多相关《基于isodata算法的Iris数据分类29918.docx(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一 实验目的通过对Iris data采用Isodata算法进行聚类,掌握Isodata算法的原理以及具体实施步骤。二实验原理C均值算法比较较简单,但它它的自我调整整能力也比较较差。这主要要表现在类别别数不能改变变,受代表点点初始选择的的影响也比较较大。ISOODATA算算法的功能与与C均值算法相相比,在下列列几方面有改改进。11.考虑了类类别的合并与与分裂,因而而有了自我调调整类别数的的能力。合并并主要发生在在某一类内样样本个数太少少的情况,或或两类聚类中中心之间距离离太小的情况况。为此设有有最小类内样样本数限制,以以及类间中心心距离参数。若若出现两类聚聚类中心距离离小于的情况况,可考虑将将此
2、两类合并并。分裂裂则主要发生生在某一类别别的某分量出出现类内方差差过大的现象象,因而宜分分裂成两个类类别,以维持持合理的类内内方差。给出出一个对类内内分量方差的的限制参数,用用以决定是否否需要将某一一类分裂成两两类。22.由于算法法有自我调整整的能力,因因而需要设置置若干个控制制用参数,如如聚类数期望望值,每次迭代允允许合并的最最大聚类对数数、及允许迭迭代次数等。下面我们将ISSODATAA算法的步骤骤列出:步骤骤1(确定控控制参数及设设置代表点)需确定定的控制参数数为,聚类期望数数,一个聚类中中的最少样本本数,标准偏差控控制参数,用用于控制分裂裂,类间距离控控制参数,用用于控制合并并,每次迭
3、代允允许合并的最最大聚类对数数,允许迭代的的次数。设初始聚类类数为及聚类类中心。步骤2(分类)对所有有样本,按给给定的个聚类类中心,以最最小距离进行行分类,即若 步骤33(撤消类内内样本数过小小类别)若有任何一一个类,其样样本数,则舍去,令,将原样本分分配至其它类类;步骤4(更新均均值向量)按现有样样本分类结果果,调整均值值参数 步骤5(计算类类内平均距离离)每类类中各样本离开开均值的平均均距离 步骤6(计算整整个样本集偏偏离均值的平平均距离) 步骤骤7(入口选选择)如如这是最后一一次迭代(取取决于迭代上上限),则转转步骤11,并并设置,防止止合并发生。如果,则转向步骤8,执行分裂步骤;如果,
4、则转向步骤11,执行合并步骤。步骤8(求各类类内各分类标标准偏差)对每个个聚类,求其其标准偏差式中是类中第个个样本的第分分量,是的第个分量,是第第个聚类第个分分量的标准偏偏差,D是样样本特征维数数。步骤9(求每类类具有最大标标准偏差的分分量) 指每类具有最大大标准偏差的的分量。步骤10(分裂裂计算步骤) 若任任一个有,并且有(a) 且,或有(bb) ,则把分裂成成两个聚类,其其中心相应为为与,把原来的的取消,且令令,由于与值设置不当当将会导致影影响到其它类类别,因此与与可按以下步步骤计算: 给定定一值,; 其中值应使使中的样本到到与的距离不同同,但又应使使中的样本仍仍然在分裂后后的新样本类类中
5、。步骤11(计算算类间聚类中中心距离)类与类的类间间距离 步骤12(列出出类间距离过过近者)比较与并将小于的按上升次序序排列 该队列列最大个数是是控制合并对对数的参数步骤13(执行行合并)从类间距离离最大的两类类开始执行合合并过程,此此时需将与合并,得 且,从第二个开开始,则要检检查其涉及类类别是否已在在前面合并过过程中被合并并,如两者并并未被合并,则则执行合并过过程。步骤14(结束束步骤)如是最后一一次迭代则终终止,否则可可根据需要转转步骤1或步步骤2,转步步骤1是为了了更改控制数数。迭代计数数要加1。以上是整个ISSODATAA算法的计算算步骤。可以以看出ISOODATA算算法与C均值值算
6、法一样,都都是以与代表表点的最小距距离作为样本本聚类的依据据,因此比较较适合各类物物体在特征空空间以超球体体分布的方式式分布,对于于分布形状较较复杂的情况况需要采用别别的度量。IISODATTA算法与CC均值算法的的主要不同在在于自我控制制与调整的能能力不同。它它们的另一个个不同点是,CC均值算法的的类均值参数数在每个样本本归入时随即即修改,因而而称为逐个样样本修正法,而而ISODAATA算法的的均值向量或或聚类中心参参数是在每一一次迭代分类类后修正的,因因而称为成批批样本修正法法。三 实验过程及结果果分析按照算法过程进进行仿真,首首先设置算法法中所需要的的控制参数,控控制参数的选选取有多种选
7、选择组合,这这里,我们先先设置一组控控制参数,对对Iris data进进行聚类,说说明算法的实实施过程以及及对得到的结结果进行分析析。参数设置置如下图所示示:其中,确定初始始聚类中心个个数后,在1150个原始始数据中随机机挑选10个个作为聚类中中心,然后对对原始1500个数据以该该10个聚类类中心以最小小距离进行聚聚类。结果如如下:结果中的cennter矩阵阵为聚类中心心矩阵,每一一列代表一聚聚类中心,每每一列前4行行为聚类中心心的4个分量量,第5行为为隶属于该类类的数据个数数。将类内个个数过少(小小于10)的的聚类中心删删除,并对所所有数据依照照调整后聚类类中心重新进进行聚类。完完成聚类后,
8、计计算每类的均均值,作为该该类新的聚类类中心。上图图中的第二个个centeer矩阵即为为已经完成均均值计算的每每类的聚类中中心。 完成聚类中心初初始化后,开开始进行迭代代,在第一次次迭代中(iiterattive=11),迭代次次数为奇数,但但是当前聚类类个数,所以以直接进入聚聚类中心合并并过程,结果果如下所示: 上图中,sorrtofdiis矩阵为两两两聚类中心心之间的距离离矩阵,并按按从大到小排排列。每一列列代表2类之之间的距离,第第一行为距离离,第2,33行为两类的的类别。值得得注意的是类类别号即对应应为聚类中心心在聚类中心心矩阵cennter中的的列数。进入入合并步骤不不代表一定进进行
9、合并处理理,当两类的的距离小于合合并阈值(tthmergge=2.55)时,才进进行合并处理理。且每次迭迭代,最多进进行2次合并并(merggenum=2),且必必须是不同的的4类。由结结果观察到,第第3,4类进进行合并,第第6,7类进进行合并。合合并后得到新新的聚类中心心矩阵newwcenteer,可看到到,新的矩阵阵相对于之前前的聚类中心心矩阵,少了了2列。按照照得到的新聚聚类中心,重重新对原始数数据进行聚类类,得到ceenter矩矩阵,并检验验是否有类内内样本个数过过少的聚类中中心,若没有有,对每类数数据进行平均均,得到更新新后的聚类中中心矩阵(即即上图中最后后一centter矩阵),第
10、第一次迭代完完成。 在第2次迭代中中(iterrativee=2),迭迭代次数为偶偶数,直接进进入合并步骤骤。由上图可看出,将将3,4类进进行了合并处处理(3,44类仅代表其其聚类中心在在当前聚类中中心矩阵第33,4列,与与第一次迭代代的3,4类类不是一样的的)。之后的的处理步骤与与之前一致,得得到平均后的的聚类中心矩矩阵。在第一次迭代中中(iterrativee=3),迭迭代次数为奇奇数,当前聚聚类个数,所所以进入聚类类中心分裂过过程,结果如如下所示:进入分裂步骤,但但是否进行分分裂处理还需需判断每个聚聚类中样本到到聚类中心的的标准差,将每个聚类的标标准差向量按按列排列,即即得到标准差差矩阵
11、stddofeacch,其中列列数代表聚类类个数,每行行代表聚类中中心的一个分分量。因为IIris数据据为4维数据据,则标准差差矩阵即为44行。因为33个聚类的标标准差向量中中的每个分量量都小于分裂裂阈值(thhsplitt=0.6),所以不进进行分裂处理理,进入合并并过程。3个个聚类中心的的两两距离也也都大于合并并阈值,所以以也不进行合合并处理。该该次迭代后,按按相同的方法法得到平均后后的聚类中心心矩阵。在第4次迭代中中(iterrativee=4),迭迭代次数为偶偶数,直接进进入合并步骤骤。可以看到,第44次迭代中没没有进行合并并处理,只是是对数据按照照第3次迭代代得到的新聚聚类中心重新新
12、进行聚类,并并对聚类后的的每类样本进进行平均,得得到新的聚类类中心矩阵。值值得注意的是是,在第4次次迭代时,进进行平均后的的聚类中心与与为平均之前前完全一致,说说明第3次聚聚类结果与第第4次聚类结结果是完全一一致的。说明明算法在第44次迭代时即即已收敛,完完成了分类。以以后迭代次数数结果如下:可以看到,第55次结果与第第4次也完全全一致,且不不会再对现有有类别进行分分裂。之后迭迭代结果再无无变化,就不不将其贴出。最后得到的聚类类中心如下所所示:按照该聚类中心心,对数据进进行聚类,结结果如下:以上是对1500个原始数据据分类的结果果,前4列为为每个数据的的4个特征,第第5列为该数数据的序号,第第
13、6列为该数数据聚类结果果。类别数11,2,3对对应于聚类中中心向量在聚聚类矩阵中的的列数,例如如类别为1,则则说明该数据据隶属于聚类类中心矩阵中中第1列的聚聚类中心。 可以看看到,前500个数据应分分为一类,实实验结果显示示对前50个个数据分类完完全正确。第第51到1000号数据应应属于一类,但但聚类结果显显示有2个数数据被分为了了第3类。第第101到1150号数据据应属于一类类,聚类结果果显示其中有有14个数据据被聚到了第第2类。这也也与之前的实实验结果相近近,即1到550号数据与与其他可完全全分开,后两两组数据互相相之间不可以以完全区分。改变初始聚类中中心个数,再再进行聚类,结结果如下:可以看到,第33个分量大于于分裂阈值,所所以进行分裂裂处理,分裂裂处理按照如如下公式进行行 其中选为0.44。注意,只只对第3各分分量进行修正正。 可以看到,在迭迭代到第8次次时,结果已已收敛,聚类类完成。最终终的聚类中心心矩阵为:对原始数据的分分类结果如下下:由聚类结果可得得,第一组数数据完全分类类正确,第二二组数据有33个数据分类类错误,第三三组数据有114个数据分分类错误。 由以上上两组实验结结果可得,IIsodatta算法可以以对Iriss数据得到较较为理想的分分类结果,实实验结果不依依赖于初始聚聚类中心个数数,但与各控控制参数关系系较大,实验验时应反复调调整,已得到到最佳结果。
限制150内