一种面向三维点集的多密度聚类方法与流程

文档序号:15217319发布日期:2018-08-21 17:00阅读:292来源:国知局

本发明涉及信息处理技术领域,具体涉及一种面向三维点集的多密度聚类方法。



背景技术:

近年来,聚类作为数据挖掘的重要分支,逐渐引起广泛的重视。相对于其他数据挖掘方法,聚类具有无须先验知识的优势,可以根据数据自然分布而获取知识。聚类算法的目的是对一组未知类标的数据样本进行划分,希望找到数据集中隐藏的潜在结构;并按照某种相似性度量,使得具有相似性质的数据归于同一类,不相似性质的数据尽可能地分开。

经过多年研究,国内外学者针对不同的应用和基于不同的理论提出了各种各样的聚类算法,大致可分为四种:分割法、层次法、基于密度的方法和基于网格的方法。

分割法是一种通过对一个评价函数进行优化,把数据划分成若干子类的方法,包括k-means(k均值),k-modes(属性均值聚类),pam,clara等算法,这些方法一般在聚类开始时就要确定最终分块的个数k值,而且对某些形状分布的点集会得出错误的结果。

层次法是对给定的数据对象的集合进行层次的分界,根据一些指定标准把数据排列成一个树状结构的算法,较为典型的有birch、rock等算法。某些层次法虽然能适用于各种形状的点集,但这些方法一般都比较复杂,时间效率也普遍不高,且很容易出现大量点未分类的情况。

基于密度的方法是根据数据对象的分布密度,将密度足够大的数据对象聚集成一类,例如dbscan,denclue等,其优点是无需预先知道聚类的数目,受点集分布形状的影响低,但是在基于密度的方法中所选参数对结果的影响很大,且很难确定参数的最优值。

基于网格的算法如clique等,是一种在聚类所在区域划分网格,根据网格结构进行聚类的方法。基于网格的算法一般具有较高的时间效率,可适用于不规则形状的聚类。但是该方法的结果取决于网格划分大小,而且受噪声影响也较大。

针对上述已有技术状况,本发明申请人做了大量反复而有益的探索,最终形成了下面将要介绍的技术方案。



技术实现要素:

针对上述的不足,本发明提供了一种面向三维点集的多密度聚类方法,该方法在综合各种聚类算法的基础上,将基于密度的方法和基于网格的方法相结合,提出一种适用于不同分布、不同密度的聚类方法,能实现良好的聚类效果。

本发明是通过以下技术方案实现的:一种面向三维点集的多密度聚类方法,包括如下的步骤:

s1:划分网格,采用相邻网格搜索的方式对点集进行初步分块;

s2:对于初步分块后的每一块,在每一块所在区域再进行一次更小的网格划分和相邻网格搜索,得到块细分结果;

s3:对步骤s2细分后的块,估算其密度并根据密度进行优先级排序;

s4:通过高优先级搜索低优先级块的方式完成块合并,得到最终的分块结果。

作为进一步优化,本发明还在如下方面做了改进:

作为优化,所述步骤s1中初步分块具体包括如下步骤:

s11:在点集所在区域进行网格划分;

s12:网格划分完毕后,进行相邻网格点集搜索。

作为优化,步骤s11的具体包括如下步骤:

s111:求出待分块点的x,y,z坐标最大最小值xmax,xmin,ymax,ymin,zmax,zmin,则分块区域体积v=(xmax-xmin)(ymax-ymin)(zmax-zmin);

s112:设待分块点个数为n,平均每个网格点个数为nave(nave建议值为0.1),则总网格个数ngrid=n/nave,每个网格的体积vgrid=v/ngrid,预计网格边长

s113:计算点集所在空间的x,y,z坐标跨度xspan=xmax-xmin,yspan=ymax-ymin,zspan=zmax-zmin,则在x,y,z坐标要划分的网格个数分别为nxgrid=xspan/lgrid,nygrid=yspan/lgrid,nzgrid=zspan/lgrid,每个网格的长宽高分别为lx=xspan/nxgrid,ly=yspan/nygrid,lz=zspan/nzgrid;

s114:对于任意一点p(x,y,z),可计算出其所在的行、列、层号为将所有点都分配到其所在网格中。

作为优化,步骤s12的具体包括如下步骤:

s121:在待分块点集中找到任意还未分块的点p,设其所在的块为b1,将其所在网格g和g周围26个网格中所有未分块点加入到块b1中;

s122:对于g邻接的网格(若g不在边界上,应为26个)g’,对于含有未分块点的网格,继续搜索g’邻接网格中的未分块点加入到b1中;

s123:迭代进行步骤s122,直到无法搜到其他还有未分块点的网格,块b1中点添加完毕;

s124:继续寻找未分块的点进行步骤s121-s123,搜索到的未分块点加入另一块bn中;

s125:重复步骤s124,生成其他块,直到所有点都找到其所在块;

作为优化,步骤s2中块细分的具体方法为:

对于初步分块后的每一块,都按步骤是s11、s12中初步分块的方式在当前块所在区域以平均每个网格点个数0.1划分小网格进行细分。

作为优化,步骤s4中块合并具体包括如下步骤:

s41:计算每一点的密度表征量。对于块中一点p,若块中总点数大于k(建议值为5),首先找到离p最近的块内k个点,计算p到这k个点的距离的平均值d;如果块中总点数小于等于k,则计算p与块中所有点的距离的平均值作为d(块中只有一个点时d=+∞),把d作为p点的密度表征量;

s42:根据块中每一点的密度表征量对块的优先级计算。对块中每一点的d值求平均得到dave,对于块点数大于k的块,按照1/dave作为优先级;块点数小于等于k的块,按照-dave作为优先级。按照优先级从大到小的顺序将块排列起来;

s43:从还未处理的优先级最高的块b1开始,以其中每一个点为球心,以该点密度表征量d的a倍作为半径,a值为2,搜索非b1块的点,如果搜到的点所属块为b2,且b2的优先级小于b1,则执行步骤s44,否则执行步骤s45;

s44:把b1、b2块合并,重新计算合并后块每一点的d值及块的dave值,并将其按照步骤s42的规则放入优先级序列。同时所有块都标记为未处理,执行步骤s43;

s45:如果该块不是优先级最低的块,则将该块标记为已处理,进行步骤s43的操作;否则,块合并结束。

本发明的有益效果:

(1)本发明提出一种面向三维点集的多密度聚类方法,通过两次网格划分将块划分的足够小,再通过块之间进行以密度为相关量的查找过程,能够有效提高三维点集的聚类准确度。

(2)本发明采用了两次网格划分并查找的方式将待分块点集分成最小的块,避免了在无点区域划分大量网格的情况,可以有效减少算法占用的空间。

(3)本发明采用将最小的块按照其密度计算优先级,并采用密度小的块合并密度大的块的方式将属于同一块的点合并在一起,避免了因块之间密度不同而造成的错误合并现象。

(4)本发明对于点数非常少导致密度计算不准确的块采用降低其优先级的方法,避免了它们对其他块聚类结果的影响。

(5)本发明通过两次网格划分将块划分的极小,有效解决了本该是多块的点集分到一块的情况;又通过基于密度的块合并方法,将密度相近距离相近的小块合并在一起,有效解决了本该是一块的点集分成多块的情况。

(6)本发明适用于不同分布、不同密度的三维点集,能实现良好的聚类效果。

附图说明

图1为本发明聚类算法整体过程流程图;

图2为初步分块过程流程图;

图3为块合并过程流程图;

图4为本发明中待分块点集示意图;

图5为本发明中局部待分块数据初步分块过程示意图;

图6为本发明中初步分块结束后分块结果示意图;

图7为本发明中局部待分块数据块细分过程及块合并过程示意图;

图8为本发明中点集最终聚类结果示意图。

具体实施方式

为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本方案进行阐述。

如图1-8所示,本实施案例面向密度变化较大、形状各异的待分块点集,应用本发明所提出的一种面向三维点集的多密度聚类方法,包括以下步骤:

第一步:通过划分网格,相邻网格搜索的方式对点进行初步分块。

根据本案例的点数及数据点的分布位置,具体初步分块过程如下:

(1)在点集所在区域进行网格划分,具体步骤如下:a、求出待分块点的x,y,z坐标最大最小值xmax,xmin,ymax,ymin,zmax,zmin分别为219.83,0,34.62,0,357.54,0,则分块区域体积v=(xmax-xmin)(ymax-ymin)(zmax-zmin)=2721063.39;

b、该待分块点集点个数n为341,平均每个网格点个数nave定为0.1,则总网格个数ngrid=n/nave=3410,每个网格的体积vgrid=v/ngrid=797.97,预计网格边长

c、计算点集所在空间的x,y,z坐标跨度xspan=xmax-xmin=219.83,yspan=ymax-ymin=34.62,zspan=zmax-zmin=357.54,则在x,y,z坐标要划分的网格个数分别为nxgrid=xspan/lgrid≈24,nygrid=yspan/lgrid≈4,nzgrid=zspan/lgrid≈39,每个网格的长宽高分别为lx=xspan/nxgrid=9.16,ly=yspan/nygrid=8.66,lz=zspan/nzgrid=9.17。

d、对于任意一点p(x,y,z),可计算出其所在的行、列、层号为将所有点都分配到其所在网格中。

(2)网格划分完毕后,进行相邻网格点集搜索,具体步骤如下:

a、在待分块点集中找到任意还未分块的点p,如图5所示,该区域节选了图4点集的一部分网格划分情况,图中网格从下到上从左至右从前到后依次为g1~g24,未分块的点p位于加粗的网格g5中。p1所在的块为b1,则将其所在网格g5和g5的邻接网格g1、g2、g6、g9、g10、g13、g14、g17、g18、g21、g22的所有点都加入到块b1中。

b、对于g5的邻接网格,对于其中含有未分块点的g1、g6、g9、g13、g21,搜索它们的邻接网格中是否有未分块的点。其中,网格g6搜索到其邻接网格g7、g19中均有未分块点,所以将g7、g19的中的为分块点加入到b1中。

c、迭代进行步骤b,即继续搜索g7、g19的邻接网格,找到未分块的点加入到b1中,再搜索g7、g19邻接网格的邻接网格,直到找不到含有未分块点的邻接网格为止。待g7、g9的邻接网格g8、g12、g24中的未分块点加入b1后,此时已搜索不到其他含有未分块点的邻接网格,则块b1中点添加完毕,如图5所示的点集都被划分到了块b1中。

d、继续在图4中寻找未分块的点进行上述步骤a-c,搜索到的未分块点加入另一块bn中;如图6所示,实线上部的点集被划分到了块b2中。

e、重复步骤d,生成其他块,直到所有点都找到其所在块。

如图6所示,最终实线上部点分到了块b2中,右下点集分到了块b1中,左下角两个点分别分到了块b3、b4中。

第二步,如图5所示区域为例,进行块细分,具体过程如下:a、求b1块点的x,y,z坐标最大最小值xmax,xmin,ymax,ymin,zmax,zmin分别为219.83,101.23,34.62,0,98.45,0,则分块区域体积v=(xmax-xmin)(ymax-ymin)(zmax-zmin)=404229.01;

b、b1中点数为102,平均每个网格点个数nave定为0.1,则总网格个数ngrid=n/nave=1020,每个网格的体积vgrid=v/ngrid=396.30,预计网格边长

c、计算点集所在空间的x,y,z坐标跨度xspan=xmax-xmin=118.6,yspan=ymax-ymin=34.62,zspan=zmax-zmin=98.45,则在x,y,z坐标要划分的网格个数分别为nxgrid=xspan/lgrid≈16,nygrid=yspan/lgrid≈5,nzgrid=zspan/lgrid≈13,每个网格的长宽高分别为lx=xspan/nxgrid=7.41,ly=yspan/nygrid=6.92,lz=zspan/nzgrid=13。

d、对于任意一点p(x,y,z),计算出其所在的行、列、层号为将所有点都分配到其所在网格中。分配结果如图7所示。

e、网格划分完成后,以第一步(2)中相同的方式进行网格搜索。由于一个块内点集比较集中,此时网格已足够小,如图7所示,最终分成了4块,4块分别为b11、b12、b13、b14。

f、按照上述a-e的步骤同样对图4的b2、b3、b4进行细分,得到最终的细分结果。

第三步,如细分后的图7所示,块合并的具体过程如下:

a、计算图7中每一点的密度表征量。由于块b11、b12、b13、b14中的点数都大于5,所以对于每个点,例如b13中点p1,找到离p1最近的块内5个点,分别为p2、p4、p5、p6、p7,它们与p1的距离分别为1.53、2.48、0.97、2.55、2.64,计算它们的平均值d为2.034,把d作为p1点的密度表征量。对于其他点,按照同样的规则计算其密度表征量。

b、根据块中每一点的密度表征量对块的优先级计算。对块中每一点的d值求平均得到dave,例如块b12,其6个点的d分别为3.11、1.06、0.99、1.21、1.15、1.03,则其dave为1.71,优先级为1/dave=0.585;以同样方式计算出块b11、b13、b14的优先级分别为1.92、0.27、0.16,如图7所示,块的优先级排列为b11、b12、b13、b14。计算出图4中除图7的其他块的密度表征量。

c、从还未处理的优先级最高的块b开始,以其中每一个点为球心,以该点密度表征量d的2倍作为半径,搜索非b块的点。当还未处理的优先级最高的块为b11时,用b11中每个点的以其d的2倍为半径搜索其他块点,发现无法搜到其他块,则进行步骤e;当还未处理的优先级最高的块为b12时,用b12中的点p8的d为1.03,以其两倍2.06为半径搜索到了块b13中的点p9,且b13的优先级小于b12,则进行步骤d。

d、把原先块和搜到的块合并,如上述c中b12块的p8搜到b13块的p9后,将b13中所有点加入到b12中,删除b13,重新计算b12每一点的d值及块的dave值,并按照步骤b的规则放入优先级序列。同时所有块都标记为未处理,执行步骤c。

e、如果该块不是优先级最低的块,如步骤c中的b11,则将b11标记为已处理,进行步骤c的操作;否则,块合并结束。

如图8所示显示了本实施例中点集最终聚类结果,从图中可以看出,本发明提出的聚类算法具有较好的聚类效果。

对于本领域的普通技术人员而言,根据本发明的教导,在不脱离本发明的原理与精神的情况下,对实施方式所进行的改变、修改、替换和变型仍落入本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1