地理位置聚类方法与流程

文档序号:12034762阅读:1854来源:国知局

本发明属于软件算法技术领域,具体涉及一种地理位置聚类方法。



背景技术:

随着计算机技术的发展,现今,我们需要地图导航时,大都使用电子地图,从电子地图上输入目的地后,能够直接在地图上定位该目的地。但是,现有的算法会出现提取不正确、或其它原因导致的异常点,从而会导致生产的地理位置数据不准确。或者由于地理位置生产者使用不同坐标系而产生位置漂移的问题。



技术实现要素:

本发明是为了解决上述问题而进行的,目的在于提供一种能够排除提取不正确或其它原因导致的异常点,从而生产正确、无噪音的地理位置数据,并且还可以消除由于地理位置生产者使用不同坐标系而产生的位置漂移的地理位置聚类方法。

本发明提供了一种地理位置聚类方法,其特征在于,包括以下步骤:步骤1,判断数据点集是否符合正态分布,如果符合则进入步骤2,如果不符合则结束;

步骤2,根据所述数据点集的正态分布基于预定规则得出所述数据点集的核函数的带宽;

步骤3,根据所述数据点集基于预定规则确定起始点;

步骤4,根据所述起始点、所述带宽基于预定规则得到所述起始点移动到的终点,标记从所述起始点移动到所述终点的计算过程中访问过的所述数据点集中的数据,并将标记的数据归为一个簇;

步骤5,判断所述数据点集中的所有数据是否均被标记过,如果所述数据点集中的所有数据均被标记过则进入步骤7,如果所述数据点集中有未被标记的数据,则进入步骤6;

步骤6,将所述数据点集中被标记过的数据剔除,将未被标记的数据作为新的数据点集计算得到新的起始点,然后返回步骤4;

步骤7,将得到的所有簇两两进行组合,判断每个组合中的两个簇的终点之间的距离与距离阈值的大小,如果两个簇的终点之间的距离小于距离阈值,则将该两个簇合并,如果两个簇的终点之间的距离大于距离阈值,则将两个簇分别作为单独的簇,并基于预定规则将所述数据点集中属于多个簇的多簇数据的进行归类。

进一步,在本发明提供的地理位置聚类方法中,还可以具有这样的特征:其中,步骤1中,根据数据点集分布的偏度和峰度来判断数据点集是否符合正态分布,偏度和峰度的计算方法如下:

s表示偏度;c表示峰度;xi表示数据点集中的一个数据;表示数据点集中的数据均值;n为数据点集中的数据个数;表示数据变量x关于分布中心的3阶距;为数据点集的标准差。

进一步,在本发明提供的地理位置聚类方法中,还可以具有这样的特征:其中,步骤1中,如果数据点集不符合正态分布,在结束前,先对数据点集进行调整,如果调整后符合正态分布的则进入步骤2,如果不能调整成正态分布的则结束。

进一步,在本发明提供的地理位置聚类方法中,还可以具有这样的特征:其中,步骤2中,带宽的计算方法如下:

h为核函数的带宽;为数据点集的标准差;n为数据点集中的数据个数。

进一步,在本发明提供的地理位置聚类方法中,还可以具有这样的特征:其中,起始点采用中心点计算公式得到,中心点计算公式如下:

n为确定起始点时选用的数据点集中的数据个数;centralon为中心点的经度;centralat为中心点的纬度。

进一步,在本发明提供的地理位置聚类方法中,还可以具有这样的特征:其中,步骤4中从所述起始点移动到所述终点的方法如下:

步骤4-1,以起始点为中心点,查找所述数据点集中所有到中心点的距离小于带宽的数据并进行标记,并计算中心点到每个标记的数据的漂移向量;

步骤4-2,将步骤4-1中得到的所有漂移向量相加得到中心点的偏移向量,将中心点沿所述偏移向量移动,移动的距离为所述偏移向量的绝对值,移动后到达的点作为中间点;

步骤4-3,判断所述偏移向量与设定阈值的大小,如果大于设定阈值,则返回步骤4-1,并以步骤4-2中得到的中间点为中心点开始迭代计算,如果小于设定阈值,则记录下该中间点作为终点,并且将在该迭代过程中被标记过的点归类为一个簇。

进一步,在本发明提供的地理位置聚类方法中,还可以具有这样的特征:其中,漂移向量采用以下方法得到:

为数据点集的标准差;k(x)为gaussiankernel函数;h为核函数的带宽;xi表示步骤4-1中标记的数据;x表示中心点。

进一步,在本发明提供的地理位置聚类方法中,还可以具有这样的特征:其中,数据点集中属于多个簇的多簇数据采用以下方法进行归类:在步骤4中聚类一个簇时,每执行一次步骤4-1,被标记的数据属于该簇的概率加1,将多簇数据属于各个簇的概率进行比较,将多簇数据归类于概率大的那个簇。

进一步,在本发明提供的地理位置聚类方法中,还可以具有这样的特征:其中,在分布式平台上运行地理位置聚类方法。

进一步,在本发明提供的地理位置聚类方法中,还可以具有这样的特征:其中,分布式平台为spark平台。

本发明的优点如下:

根据本发明所涉及的地理位置聚类方法,首先验证数据点集中的数据是否符合正态分布,对于符合正态分布的,先计算核函数的带宽,再计算聚类的起始点,接着根据起始点和带宽计算得到起始点需要移动到的最终点,并将该过程中访问过的数据均标记,并归类为一个簇,然后判断标记的数据是包含了数据点集中的所有数据,如果有没有被访问到的点,则将标记过的点剔除后再重新计算新的起始点,重复第一次计算起始点移动的步骤,并得到另一个簇,将所有得到的簇两两进行组合,比较每个组合中的两个簇的终点之间的距离与距离阈值的大小,合并小于距离阈值的两个簇,大于距离阈值的两个簇则分别为单独的簇,因此采用本发明的地理位置聚类方法能够排除提取不正确或其它原因导致的异常点,从而生产正确、无噪音的地理位置数据,并且本发明还可以消除由于地理位置生产者使用不同坐标系而产生的位置漂移。

附图说明

图1是本发明中地理位置聚类方法的流程图。

具体实施方式

为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,以下实施例结合附图对本发明地理位置聚类方法作具体阐述。

如图1所示,在本实施例中,地理位置聚类方法包含以下步骤:

步骤s1,判断数据点集是否符合正态分布,如果符合则进入步骤2,如果不符合则结束。

根据数据点集分布的偏度和峰度来判断数据点集是否符合正态分布,偏度和峰度的计算方法如下:

s表示偏度;c表示峰度;xi表示数据点集中的一个数据;表示数据点集中的数据均值;n为数据点集中的数据个数;表示数据变量x关于分布中心的3阶距;为数据点集的标准差。

在本实施例中,如果数据点集不符合正态分布,在结束前,先对数据点集进行调整,如果调整后符合正态分布的则进入步骤2,如果不能调整成正态分布的则说明该数据点集不适用本发明的地理位置聚类方法。

步骤s2,根据所述数据点集的正态分布基于预定规则得出所述数据点集的核函数的带宽。

核函数的带宽的计算方法如下:

h为核函数的带宽;为数据点集的标准差;n为数据点集中的数据个数。

步骤s3,根据数据点集基于预定规则确定起始点。

在开始对数据点集中的数据进行聚类之前,首先要选择对数据进行聚类的起点。由于我们计算的数据是地理位置数据,因此其本身就有一定的聚集性,尤其是当输入的数据源是一个城市的时候,那么根据我们输入的数据点集,根据以下中心点计算公式,起始点采用中心点计算公式得到,中心点计算公式如下:

将上述公式中x、y、z的表达式带入centralat和centralon的表

达式中后,centralat和centralon的计算公式分别如下:

n为确定起始点时选用的数据点集中的数据个数;centralon为中心点的经度;centralat为中心点的纬度;x、y、z为计算过程中间量。

步骤s4,根据起始点、带宽基于预定规则得到起始点移动到的终点,标记从起始点移动到终点时访问过的数据点集中的数据,并将标记的数据归为一个簇。

从所述起始点移动到所述终点的方法如下:

步骤4-1,以步骤3中确定的起始点为中心点,查找数据点集中所有到中心点的距离小于带宽的数据,并进行标记,为了下文描述,将这些数据记作记作集合m1,将集合m1中的数据归类于簇c,并将集合m1中的数据属于簇c的概率加1。然后,计算中心点到集合m1中每个数据的漂移向量。漂移向量即中心点到标记数据形成的向量。

漂移向量采用以下方法得到:

为数据点集的标准差;k(x)为gaussiankernel函数;h为核函数的带宽;xi表示步骤4-1中标记的数据;x表示中心点。

步骤4-2,将步骤4-1中得到的所有漂移向量相加得到中心点的偏移向量,将中心点沿偏移向量移动,移动的距离为偏移向量的绝对值,移动后到达的点作为中间点。

步骤4-3,判断偏移向量与设定阈值的大小,如果大于设定阈值,则返回步骤4-1,并以步骤4-2中得到的中间点为中心点开始迭代计算,重复步骤4-1、步骤4-2、步骤4-3。具体为:返回步骤4-1并以步骤4-2中得到的中间点为中心点,查找数据点集中数据到该中心点的距离小于带宽的所有的数据,并进行标记,将这些数据记作记作集合m2,将集合m2中的数据也归类于簇c,并将集合m2中的数据属于簇c的概率加1,其中,集合m2中的数据与集合m1中的数据有部分是重复的。然后,计算起始点到集合m2中每个数据的漂移向量。如果小于设定阈值,则记录下该中间点作为终点。并且将在该迭代过程中被标记过的点归类为一个簇。

如果步骤4-3的判定结果一直为偏移向量大于设定阈值,则一直重复重复步骤4-1、步骤4-2、步骤4-3的步骤,每执行一次步骤4-1,被标记的数据属于该簇的概率加1。即:每重复一次,则产生一个集合mi,不同集合mi中包含有相同的数据,也包含有不同的数据,即,一个数据可能属于多个集合mi,而这个过程中产生的所有集合mi中的全部数据均归类为簇c,一个数据属于几个集合mi,则其属于簇c的概率就为几。

步骤s5,判断数据点集中的所有数据是否均被标记过,如果数据点集中的所有数据均被标记过则进入步骤7,如果数据点集中有未被标记的数据,则进入步骤6。

步骤s6,将数据点集中被标记过的数据剔除,将未被标记的数据作为新的数据点集计算得到新的起始点,然后返回步骤4。其中,剔除的数据仅在计算新的起始点时被剔除,在返回步骤4时的计算过程中聚类的仍然是步骤1中需要进行聚类的数据点集。

步骤s7,将得到的所有簇两两进行组合,判断每个组合中的两个簇的终点之间的距离与距离阈值的大小,如果两个簇的终点之间的距离小于距离阈值,则将该两个簇合并,如果两个簇的终点之间的距离大于距离阈值,则将两个簇分别作为单独的簇。在本实施例中,距离阈值为50米。由于每个数据归类时可能不只属于一个簇,在此,将属于多个簇的数据称为多簇数据,因此,需要对多簇数据进行归类。在聚类每个点时,对每个数据属于哪个簇的概率进行了计算。在本实施例中,将多簇数据属于各个簇的概率进行比较,并将多簇数据归类于概率大的那个簇。

在本实施例中,将本发明的本地理位置聚类方法在分布式平台上运行,在分布式平台上运行,能够支持tb级别的数据,并且对数据上限没有要求。分布式平台包含:mapreduce平台、hadoop平台、storm平台、spark平台等。由于本发明的地理位置聚类方法在聚类的过程中需要多次迭代才能收敛,因此,最优的,在分布式平台上,采用spark平台运行本发明的本地理位置聚类方法,才能很好的保证本发明的地理位置聚类方法运行的性能。

上述实施方式为本发明的优选案例,并不用来限制本发明的保护范围。

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