一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于密度的聚类计算方法、装置、设备和存储介质与流程

2022-11-09 22:13:41 来源:中国专利 TAG:


1.本发明涉及智能决策技术领域,尤其涉及一种基于密度的聚类计算方法、装置、设备和存储介质。


背景技术:

2.聚类分析又称群分析,它是研究样品或指标分类问题的一种统计分析方法,同时也是数据挖掘的一个重要算法。聚类分析是把参数相似的数据分成不同的组别,其应用非常广泛,例如应用于数据挖掘、机器学习等。
3.聚类分析的算法有很多种,有一些基于数据的密度进行聚类,例如dbscan(density-based spatial clustering of applications with noise)算法和optics(ordering point to idenfy the cluster stucture)算法等。当前技术中,基于密度的聚类算法的最大缺点在于步骤非常耗时,假设有一组数据,它们是1000个二维空间的点,在基于密度的聚类算法中,要确定每一个点有哪些近邻点,与该点之间的距离小于一个定义的阈值ε的点为近邻点,需要计算每一个点和其他999个点的距离,所以总共计算1000
×
999=999,000次,显然该计算量过大。


技术实现要素:

4.本发明的主要目的在于提供一种基于密度的聚类计算方法、装置、设备及计算机可读存储介质,旨在解决目前的基于数据的密度进行聚类算法计算量过大造成非常耗时的技术问题。
5.为实现上述目的,本发明提供一种基于密度的聚类计算方法,所述方法包括以下步骤:
6.将数据点所在的一维或多维空间切分成多个网格,每个所述网格的空间大小相同;
7.开启多个线程,所述线程的数量与所述数据点的数量相同,一条所述线程对应一个所述数据点;
8.利用多条所述线程同时运行,计算对应的所述数据点与所述数据点周围网格内其他数据点之间的距离;
9.利用多条所述线程同时运行,判断两个所述数据点之间的距离是否小于预设的距离阈值,若是,则一个所述数据点是另一个所述数据点的近邻点。
10.可选地,所述将数据点所在的一维或多维空间切分成多个网格,每个所述网格的空间大小相同,包括:
11.获取预设的距离阈值,根据所述距离阈值,对所述一维或多维空间切分成多个空间大小相同的网格,若设距离阈值为ε,则每个网格的空间范围均为0.5ε-1.5ε之间;
12.获取预设的编号顺序规则,根据所述编号顺序规则对已切分的多个网格进行编号。
13.可选地,所述获取预设的编号顺序规则,根据所述编号顺序规则对已切分的多个网格进行编号后,还包括:
14.获取所有的数据点在所述一维或多维空间内的坐标,对所有的坐标进行排序;
15.以排序的顺序,依次获取数据点的坐标,根据所述网格的空间大小,及所述编号顺序规则,确定所述数据点在所述一维或多维空间内被切分后的网格编号,并记录所述网格编号与所述坐标的对应关系;
16.遍历所有的数据点的坐标,得到每个被切分后的网格编号及对应的所述坐标的对应关系。
17.可选地,所述利用多条所述线程同时运行,计算对应的所述数据点与所述数据点周围网格内其他数据点之间的距离,包括:
18.获取数据点在所述一维或多维空间内的坐标,确定所述数据点在所述一维或多维空间内被切分后的网格编号;
19.根据所述网格编号及所述编号顺序规则,确定所述数据点周围的网格编号;
20.分别计算所述数据点与周围的网格编号内的其他数据点之间的距离,所述距离的计算公式如下:
[0021][0022]
其中,d为距离,所述数据点在一维或多维空间内的坐标为(a1,a2,...,an),周围的的网格编号内的其他数据点在一维或多维空间内的坐标为(b1,b2,...,bn),n为一维或多维空间的维数。
[0023]
进一步地,为实现上述目的,本发明还提供一种基于密度的聚类计算装置,包括:
[0024]
切分网格模块,用于将数据点所在的一维或多维空间切分成多个网格,每个所述网格的空间大小相同;
[0025]
确定线程模块,用于开启多个线程,所述线程的数量与所述数据点的数量相同,一条所述线程对应一个所述数据点;
[0026]
计算距离模块,用于利用多条所述线程同时运行,计算对应的所述数据点与所述数据点周围网格内其他数据点之间的距离;
[0027]
确定近邻点模块,用于利用多条所述线程同时运行,判断两个所述数据点之间的距离是否小于预设的距离阈值,若是,则一个所述数据点是另一个所述数据点的近邻点。
[0028]
可选地,所述切分网格模块,包括:
[0029]
确定网格大小单元,用于获取预设的距离阈值,根据所述距离阈值,对所述一维或多维空间切分成多个空间大小相同的网格,若设距离阈值为ε,则每个网格的空间范围均为0.5ε-1.5ε之间;
[0030]
编号单元,用于获取预设的编号顺序规则,根据所述编号顺序规则对已切分的多个网格进行编号。
[0031]
可选地,所述切分网格模块,还包括:
[0032]
排序单元,用于获取所有的数据点在所述一维或多维空间内的坐标,对所有的坐标进行排序;
[0033]
确定关系单元,用于以排序的顺序,依次获取数据点的坐标,根据所述网格的空间
大小,及所述编号顺序规则,确定所述数据点在所述一维或多维空间内被切分后的网格编号,并记录所述网格编号与所述坐标的对应关系;
[0034]
遍历单元,用于遍历所有的数据点的坐标,得到每个被切分后的网格编号及对应的所述坐标的对应关系。
[0035]
可选地,所述计算距离模块,包括:
[0036]
确定网格单元,用于获取数据点在所述一维或多维空间内的坐标,确定所述数据点在所述一维或多维空间内被切分后的网格编号;
[0037]
确定周围网格单元,用于根据所述网格编号及所述编号顺序规则,确定所述数据点周围的网格编号;
[0038]
计算单元,用于分别计算所述数据点与周围的网格编号内的其他数据点之间的距离,所述距离的计算公式如下:
[0039][0040]
其中,d为距离,所述数据点在一维或多维空间内的坐标为(a1,a2,...,an),周围的的网格编号内的其他数据点在一维或多维空间内的坐标为(b1,b2,...,bn),n为一维或多维空间的维数。
[0041]
为实现上述目的,本发明还提供一种基于密度的聚类计算设备,所述设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的基于密度的聚类计算程序,所述基于密度的聚类计算程序被所述处理器执行时实现如权利要求1至4中任一项所述的基于密度的聚类计算方法的步骤。
[0042]
为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有基于密度的聚类计算程序,所述基于密度的聚类计算程序被处理器执行时实现如权利要求1至4中任一项所述的基于密度的聚类计算方法的步骤。
[0043]
本发明提供的基于密度的聚类计算方法,在对数据的密度进行聚类计算时,先对一维或多维空间切分为若干网格后,通过限定只需计算某数据点所在的网格对应的周围网格内的数据点与该数据点之间的距离,是否在距离阈值范围内即可,无需计算所有网格内的数据点与该数据点之间的距离来确定近似点,从而大大缩小了整个聚类计算的计算量;另外,在对单个数据点与其他数据点进行计算时,采用开启多条线程的方式,每条线程同时对单个数据点计算与其他数据点的距离,进一步减少了计算耗时,大大增加了聚类计算的效率。
附图说明
[0044]
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。
[0045]
图1为本发明实施例方案涉及的基于密度的聚类计算设备的运行环境的结构示意图;
[0046]
图2为本发明一个实施例中基于密度的聚类计算方法的流程图;
[0047]
图3为本发明一个实施例中二维空间被切分和编码后的一种示意图;
[0048]
图4为本发明一个实施例中步骤s1的细化流程图;
[0049]
图5为本发明一个实施例中步骤s3的细化流程图;
[0050]
图6为本发明一个实施例中基于密度的聚类计算装置的结构图;
[0051]
图7为本发明一个实施例中切分网络模块细化的功能模块示意图;
[0052]
图8为本发明一个实施例中计算距离模块细化的功能模块示意图。
具体实施方式
[0053]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0054]
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
[0055]
参照图1,为本发明实施例方案涉及的基于密度的聚类计算设备运行环境的结构示意图。
[0056]
如图1所示,该基于密度的聚类计算设备包括:处理器1001,例如cpu,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
[0057]
本领域技术人员可以理解,图1中示出的基于密度的聚类计算设备的硬件结构并不构成对基于密度的聚类计算设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0058]
如图1所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及基于密度的聚类计算程序。其中,操作系统是管理和控制基于密度的聚类计算设备和软件资源的程序,支持基于密度的聚类计算程序以及其它软件和/或程序的运行。
[0059]
在图1所示的基于密度的聚类计算设备的硬件结构中,网络接口1004主要用于接入网络;用户接口1003主要用于侦测确认指令和编辑指令等,而处理器1001可以用于调用存储器1005中存储的基于密度的聚类计算程序,并执行以下基于密度的聚类计算方法的各实施例的操作。
[0060]
参照图2,为本发明一个实施例中的基于密度的聚类计算方法的流程图,如图1所示,一种基于密度的聚类计算方法,包括以下步骤:
[0061]
步骤s1,切分网格:将数据点所在的一维或多维空间切分成多个网格,每个网格的空间大小相同。
[0062]
本步骤将数据点所在的一维或多维空间进行空间切分成若干网格,且网格优选为矩形网格或正方形网格。切分时,如图3所示,在二维空间中含有1000个数据点,将二维空间
切分成10
×
10=100个网格,每个网格的大小相同。
[0063]
在一个实施例中,如图4所示,步骤s1进一步包括:
[0064]
步骤s101,确定网格大小:获取预设的距离阈值,根据距离阈值,对一维或多维空间切分成多个空间大小相同的网格,若设距离阈值为ε,则每个网格的空间范围均为0.5ε-1.5ε之间。
[0065]
本步骤中,每个网格的大小不能太大也不能太小,需要确保只有在同一个网格和相邻网格内的数据点才有可能是近邻点。因此优选每个网格的大小依据距离阈值ε来确定。如果网格大小超过阈值ε太多,按照后续需要计算某数据点所在网格对应的周围网格里的数据点与该数据点之间的距离是否在阈值范围内的原理,如图3所示的a区域内的网格设定为周围网格,那么相比b区域会包括更多的需要计算的点进去,很明显会增加计算量。相反如果网格大小小于阈值ε,如图3所示的c区域设定为周围网格所包含的区域,可以看出小于阈值ε时很有可能会漏掉在阈值范围内的近邻点,因此,为了保证计算全面精准以及减少计算量,优选设定网格长、宽的大小略大于阈值ε即可。
[0066]
步骤s102,编号:获取预设的编号顺序规则,根据编号顺序规则对已切分的多个网格进行编号。
[0067]
本步骤的编号顺序规则为预先设置的规则,可以在一维或多维空间内对多个网格进行编号。如图3所示,在二维空间内,采用从左往右且从上往下的纵向顺序编号的方式,将100个网格从0-99进行编号。编号顺序规则的具体规则本发明不做进一步限定,只要确保一维或多维空间内所有的网格均具有编号,且任一数据点所在的网格编号可以对应确定出四周相邻的几个网格编号即可。
[0068]
本实施例采用距离阈值对网格空间大小的限定,避免了后续查找周围网格时的漏掉问题,也减少了两个数据点的计算量,保证了聚合计算的全面精准。
[0069]
在一个实施例中,如图4所示,在步骤s102,编号后,还包括:
[0070]
步骤s103,排序:获取所有的数据点在一维或多维空间内的坐标,对所有的坐标进行排序。
[0071]
一维或多维空间内的数据点可能散布在各个网格中,因此需要确定每个网格中具有哪些数据点。本步骤通过坐标数据来确定数据点所落入的网格编号,因此需要获取所有数据点对应的坐标,且为了避免遗漏,对所有的坐标进行排序后才确定数据点的网格编号。本步骤在对坐标排序时,可以根据编号顺序规则来对应排序,例如图3中所示,二维空间采用纵向顺序编号时,本步骤的坐标也可以采用纵向顺序排序,即以数据点的坐标的x轴从小到大升序排序,x轴相同的时,以y轴从大到小的降序排序。
[0072]
步骤s104,确定关系:以排序的顺序,依次获取数据点的坐标,根据网格的空间大小,及编号顺序规则,确定数据点在一维或多维空间内被切分后的网格编号,并记录网格编号与坐标的对应关系。
[0073]
由于网格的切分是根据空间大小确定的,对网格的编号是根据编号顺序规则确定的,因此本步骤按照上一步排序好的顺序,依次获取数据点的坐标后,只要根据网格空间大小、编号顺序规则,就能确定此坐标在一维或多维空间内落入的网格编号,可以将此坐标记录在预设的记录表中,记录表中包含所有的网格编号,及对应的网格内的所有已确定的数据点的坐标。
[0074]
步骤s105,遍历坐标:遍历所有的数据点的坐标,得到每个被切分后的网格编号及对应的坐标的对应关系。
[0075]
采用上一步的方法,遍历所有已排序的坐标,直至完成所有的网格编号及对应的坐标关系为止。这样一维或多维空间中所有的数据点的坐标都确定了其所在的网格编号。
[0076]
本实施例采用集中对一维或多维空间内所有的数据点确定其所在的网格编号,为后续查找数据点的网格编号及其对应的周围网格编号提供了准确的数据,减少了后续每个线程都需要根据坐标计算查找网格编号带来的计算量。
[0077]
步骤s2,确定线程:开启多个线程,线程的数量与数据点的数量相同,一条线程对应一个数据点。
[0078]
本步骤采用并行计算原理,使用多个线程同时执行后续计算及判断近似点工作。具体的,在多核cpu(中央处理器)和gpu(图形处理器)上通过cuda、opencl、openmp等软件框架,根据一维或多维空间内的数据点的个数,确定开启的线程的个数,以确保一个数据点对应有一条线程为其服务,进行距离的计算及近似点的判断。
[0079]
例如,在二维空间内含有1000个数据点,则开启1000条线程,同时对1000个数据点执行后续的工作。
[0080]
步骤s3,计算距离:利用多条线程同时运行,计算对应的数据点与数据点周围网格内其他数据点之间的距离。
[0081]
本步骤采用单条线程服务单个数据点的方式,确保一维或多维空间内的所有数据点同时进行距离计算,大大缩短了计算耗时。例如,二维空间内含有1000个数据点,则1000条线程同时计算对应数据点与其周围网格内其他数据点之间的距离,从而实现加速基于密度的聚类算法的计算速度。
[0082]
在一个实施例中,如图5所示,步骤s3进一步包括:
[0083]
步骤s301,确定数据点的网格编号:获取数据点在一维或多维空间内的坐标,确定数据点在一维或多维空间内被切分后的网格编号。
[0084]
本步骤利用线程对单个数据点进行计算时,首先需要获取该数据点在一维或多维空间内的坐标,在确定网格编号时,可以根据网格的空间大小,及编号顺序规则,确定该数据点在一维或多维空间内被切分后的网格编号。也可以在存储有网格编号及对应的坐标关系的记录表中,直接根据坐标来查找对应的网格编号。
[0085]
例如,以图3为例切分及编码的二维空间,某一数据点a,根据数据点a的坐标,确定数据点a位于网格编号为77的网格中。
[0086]
步骤s302,确定周围的网格编号:根据网格编号及编号顺序规则,确定数据点周围的网格编号。
[0087]
在确定数据点在一维或多维空间内的网格编号后,以编号顺序规则,可以直接确定出该网格编号周围相邻的其他网格编号。
[0088]
例如,以图3为例切分及编码的二维空间,某一数据点a,其网格编号77的周围网格编号为66、67、68、78、86、87、88,这些网格覆盖了距离阈值的圆形区域。
[0089]
步骤s303,计算两个数据点间的距离:分别计算数据点与周围的网格编号内的其他数据点之间的距离,距离的计算公式如下:
[0090][0091]
其中,d为距离,数据点在一维或多维空间内的坐标为(a1,a2,...,an),周围的的网格编号内的其他数据点在一维或多维空间内的坐标为(b1,b2,...,bn),n为一维或多维空间的维数。
[0092]
本步骤通过上述距离计算公式,计算数据点与其周围网格编号内的所有其他数据点之间的距离。例如,以图3为例切分及编码的二维空间,某一数据点a,只需要计算网格编号为66、67、68、78、86、87、88内的数据点与数据点a的距离即可。若数据点a的坐标为(a1,a2),网格编号为66的数据点的坐标为(b1,b2),由于是二维空间,此时n为2,则两点间距离d的计算公式为:
[0093]
d=sqrt((a
1-b1)2 (a
2-b2)2)
[0094]
若这些周围网格编号内的共有100个数据点,每个点都需要进行99次距离计算,总计算量会降低到100
×
99=9900次,即计算量相比每个点进行999次距离计算减少到十分之一。
[0095]
另外,由于本步骤的每个数据点都采用独立的线程进行计算,每一个线程同时做99次距离的计算即可,则计算所占用的时间仅仅是单个数据点依次与其他99个数据点计算距离的时间。
[0096]
本实施例通过数据点的坐标确定网格编号,通过网格编号及编码顺序规则,确定该数据点周围的网格编号,只计算数据点与周围网格编号内的其他数据点之间的距离,且采用多线程同时计算距离的方式,大大减少了聚类计算的计算量,进一步减少计算耗时。
[0097]
步骤s4,确定近邻点:利用多条线程同时运行,判断两个数据点之间的距离是否小于预设的距离阈值,若是,则一个数据点是另一个数据点的近邻点。
[0098]
在判断两个数据点是否是近邻点时,也通过单条线程服务对应的单个数据点的方式,多条线程同时计算及判断。本步骤得到的近邻点为最终的聚类算法提供直接可靠的数据。
[0099]
例如,以图3为例切分及编码的二维空间,某一数据点a,其周围网格内在圆形区域内的所有数据点均判断为数据点a的近邻点。
[0100]
本实施例基于密度的聚类计算方法,将一维或多维空间依据距离阈值切分成若干网格,通过限定只需计算某数据点所在的网格与其周围网格里的其他数据点之间的距离是否在距离阈值范围内,来确定两个数据点之间是否为近邻点,无需计算所有网格内的数据点与其他所有数据点之间的距离,从而大大缩小计算量。另外,在计算距离时,通过开启多个线程的方式,所有数据点同时进行计算工作,进一步减少计算耗时。
[0101]
在一个实施例中,提出了一种基于密度的聚类计算装置,如图6所示,该装置包括:
[0102]
切分网格模块,用于将数据点所在的一维或多维空间切分成多个网格,每个网格的空间大小相同;
[0103]
确定线程模块,用于开启多个线程,线程的数量与数据点的数量相同,一条线程对应一个数据点;
[0104]
计算距离模块,用于利用多条线程同时运行,计算对应的数据点与数据点周围网格内其他数据点之间的距离;
[0105]
确定近邻点模块,用于利用多条线程同时运行,判断两个数据点之间的距离是否小于预设的距离阈值,若是,则一个数据点是另一个数据点的近邻点。
[0106]
基于与上述本发明实施例的基于密度的聚类计算方法相同的实施例说明内容,因此本实施例对基于密度的聚类计算装置的实施例内容不做过多赘述。
[0107]
在一个实施例中,如图7所示,切分网格模块,进一步包括:
[0108]
确定网格大小单元,用于获取预设的距离阈值,根据距离阈值,对一维或多维空间切分成多个空间大小相同的网格,若设距离阈值为ε,则每个网格的空间范围均为0.5ε-1.5ε之间;
[0109]
编号单元,用于获取预设的编号顺序规则,根据编号顺序规则对已切分的多个网格进行编号;
[0110]
排序单元,用于获取所有的数据点在一维或多维空间内的坐标,对所有的坐标进行排序;
[0111]
确定关系单元,用于以排序的顺序,依次获取数据点的坐标,根据网格的空间大小,及编号顺序规则,确定数据点在一维或多维空间内被切分后的网格编号,并记录网格编号与坐标的对应关系;
[0112]
遍历单元,用于遍历所有的数据点的坐标,得到每个被切分后的网格编号及对应的坐标的对应关系。
[0113]
基于与上述本发明实施例的基于密度的聚类计算方法相同的实施例说明内容,因此本实施例对基于密度的聚类计算装置的实施例内容不做过多赘述。
[0114]
在一个实施例中,如图8所示,计算距离模块,进一步包括:
[0115]
确定网格单元,用于获取数据点在一维或多维空间内的坐标,确定数据点在一维或多维空间内被切分后的网格编号;
[0116]
确定周围网格单元,用于根据网格编号及编号顺序规则,确定数据点周围的网格编号;
[0117]
计算单元,用于分别计算数据点与周围的网格编号内的其他数据点之间的距离,距离的计算公式如下:
[0118][0119]
其中,d为距离,数据点在一维或多维空间内的坐标为(a1,a2,...,an),周围的的网格编号内的其他数据点在一维或多维空间内的坐标为(b1,b2,...,bn),n为一维或多维空间的维数。
[0120]
基于与上述本发明实施例的基于密度的聚类计算方法相同的实施例说明内容,因此本实施例对基于密度的聚类计算装置的实施例内容不做过多赘述。
[0121]
在一个实施例中,提出了一种基于密度的聚类计算设备,设备包括:存储器、处理器以及存储在存储器上并可在处理器上运行的基于密度的聚类计算程序,基于密度的聚类计算程序被处理器执行时实现上述各实施例的基于密度的聚类计算方法中的步骤。
[0122]
在一个实施例中,一种计算机可读存储介质,计算机可读存储介质上存储有基于密度的聚类计算程序,基于密度的聚类计算程序被处理器执行时实现上述各实施例的基于密度的聚类计算方法中的步骤。其中,存储介质可以为非易失性存储介质。
[0123]
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,read only memory)、随机存取存储器(ram,random access memory)、磁盘或光盘等。
[0124]
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0125]
以上所述实施例仅表达了本发明一些示例性实施例,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献