本發(fā)明屬于軟件算法技術(shù)領(lǐng)域,具體涉及一種地理位置聚類方法。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)的發(fā)展,現(xiàn)今,我們需要地圖導(dǎo)航時(shí),大都使用電子地圖,從電子地圖上輸入目的地后,能夠直接在地圖上定位該目的地。但是,現(xiàn)有的算法會(huì)出現(xiàn)提取不正確、或其它原因?qū)е碌漠惓|c(diǎn),從而會(huì)導(dǎo)致生產(chǎn)的地理位置數(shù)據(jù)不準(zhǔn)確?;蛘哂捎诘乩砦恢蒙a(chǎn)者使用不同坐標(biāo)系而產(chǎn)生位置漂移的問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明是為了解決上述問題而進(jìn)行的,目的在于提供一種能夠排除提取不正確或其它原因?qū)е碌漠惓|c(diǎn),從而生產(chǎn)正確、無噪音的地理位置數(shù)據(jù),并且還可以消除由于地理位置生產(chǎn)者使用不同坐標(biāo)系而產(chǎn)生的位置漂移的地理位置聚類方法。
本發(fā)明提供了一種地理位置聚類方法,其特征在于,包括以下步驟:步驟1,判斷數(shù)據(jù)點(diǎn)集是否符合正態(tài)分布,如果符合則進(jìn)入步驟2,如果不符合則結(jié)束;
步驟2,根據(jù)所述數(shù)據(jù)點(diǎn)集的正態(tài)分布基于預(yù)定規(guī)則得出所述數(shù)據(jù)點(diǎn)集的核函數(shù)的帶寬;
步驟3,根據(jù)所述數(shù)據(jù)點(diǎn)集基于預(yù)定規(guī)則確定起始點(diǎn);
步驟4,根據(jù)所述起始點(diǎn)、所述帶寬基于預(yù)定規(guī)則得到所述起始點(diǎn)移動(dòng)到的終點(diǎn),標(biāo)記從所述起始點(diǎn)移動(dòng)到所述終點(diǎn)的計(jì)算過程中訪問過的所述數(shù)據(jù)點(diǎn)集中的數(shù)據(jù),并將標(biāo)記的數(shù)據(jù)歸為一個(gè)簇;
步驟5,判斷所述數(shù)據(jù)點(diǎn)集中的所有數(shù)據(jù)是否均被標(biāo)記過,如果所述數(shù)據(jù)點(diǎn)集中的所有數(shù)據(jù)均被標(biāo)記過則進(jìn)入步驟7,如果所述數(shù)據(jù)點(diǎn)集中有未被標(biāo)記的數(shù)據(jù),則進(jìn)入步驟6;
步驟6,將所述數(shù)據(jù)點(diǎn)集中被標(biāo)記過的數(shù)據(jù)剔除,將未被標(biāo)記的數(shù)據(jù)作為新的數(shù)據(jù)點(diǎn)集計(jì)算得到新的起始點(diǎn),然后返回步驟4;
步驟7,將得到的所有簇兩兩進(jìn)行組合,判斷每個(gè)組合中的兩個(gè)簇的終點(diǎn)之間的距離與距離閾值的大小,如果兩個(gè)簇的終點(diǎn)之間的距離小于距離閾值,則將該兩個(gè)簇合并,如果兩個(gè)簇的終點(diǎn)之間的距離大于距離閾值,則將兩個(gè)簇分別作為單獨(dú)的簇,并基于預(yù)定規(guī)則將所述數(shù)據(jù)點(diǎn)集中屬于多個(gè)簇的多簇?cái)?shù)據(jù)的進(jìn)行歸類。
進(jìn)一步,在本發(fā)明提供的地理位置聚類方法中,還可以具有這樣的特征:其中,步驟1中,根據(jù)數(shù)據(jù)點(diǎn)集分布的偏度和峰度來判斷數(shù)據(jù)點(diǎn)集是否符合正態(tài)分布,偏度和峰度的計(jì)算方法如下:
s表示偏度;c表示峰度;xi表示數(shù)據(jù)點(diǎn)集中的一個(gè)數(shù)據(jù);
進(jìn)一步,在本發(fā)明提供的地理位置聚類方法中,還可以具有這樣的特征:其中,步驟1中,如果數(shù)據(jù)點(diǎn)集不符合正態(tài)分布,在結(jié)束前,先對數(shù)據(jù)點(diǎn)集進(jìn)行調(diào)整,如果調(diào)整后符合正態(tài)分布的則進(jìn)入步驟2,如果不能調(diào)整成正態(tài)分布的則結(jié)束。
進(jìn)一步,在本發(fā)明提供的地理位置聚類方法中,還可以具有這樣的特征:其中,步驟2中,帶寬的計(jì)算方法如下:
h為核函數(shù)的帶寬;
進(jìn)一步,在本發(fā)明提供的地理位置聚類方法中,還可以具有這樣的特征:其中,起始點(diǎn)采用中心點(diǎn)計(jì)算公式得到,中心點(diǎn)計(jì)算公式如下:
n為確定起始點(diǎn)時(shí)選用的數(shù)據(jù)點(diǎn)集中的數(shù)據(jù)個(gè)數(shù);centralon為中心點(diǎn)的經(jīng)度;centralat為中心點(diǎn)的緯度。
進(jìn)一步,在本發(fā)明提供的地理位置聚類方法中,還可以具有這樣的特征:其中,步驟4中從所述起始點(diǎn)移動(dòng)到所述終點(diǎn)的方法如下:
步驟4-1,以起始點(diǎn)為中心點(diǎn),查找所述數(shù)據(jù)點(diǎn)集中所有到中心點(diǎn)的距離小于帶寬的數(shù)據(jù)并進(jìn)行標(biāo)記,并計(jì)算中心點(diǎn)到每個(gè)標(biāo)記的數(shù)據(jù)的漂移向量;
步驟4-2,將步驟4-1中得到的所有漂移向量相加得到中心點(diǎn)的偏移向量,將中心點(diǎn)沿所述偏移向量移動(dòng),移動(dòng)的距離為所述偏移向量的絕對值,移動(dòng)后到達(dá)的點(diǎn)作為中間點(diǎn);
步驟4-3,判斷所述偏移向量與設(shè)定閾值的大小,如果大于設(shè)定閾值,則返回步驟4-1,并以步驟4-2中得到的中間點(diǎn)為中心點(diǎn)開始迭代計(jì)算,如果小于設(shè)定閾值,則記錄下該中間點(diǎn)作為終點(diǎn),并且將在該迭代過程中被標(biāo)記過的點(diǎn)歸類為一個(gè)簇。
進(jìn)一步,在本發(fā)明提供的地理位置聚類方法中,還可以具有這樣的特征:其中,漂移向量采用以下方法得到:
進(jìn)一步,在本發(fā)明提供的地理位置聚類方法中,還可以具有這樣的特征:其中,數(shù)據(jù)點(diǎn)集中屬于多個(gè)簇的多簇?cái)?shù)據(jù)采用以下方法進(jìn)行歸類:在步驟4中聚類一個(gè)簇時(shí),每執(zhí)行一次步驟4-1,被標(biāo)記的數(shù)據(jù)屬于該簇的概率加1,將多簇?cái)?shù)據(jù)屬于各個(gè)簇的概率進(jìn)行比較,將多簇?cái)?shù)據(jù)歸類于概率大的那個(gè)簇。
進(jìn)一步,在本發(fā)明提供的地理位置聚類方法中,還可以具有這樣的特征:其中,在分布式平臺上運(yùn)行地理位置聚類方法。
進(jìn)一步,在本發(fā)明提供的地理位置聚類方法中,還可以具有這樣的特征:其中,分布式平臺為spark平臺。
本發(fā)明的優(yōu)點(diǎn)如下:
根據(jù)本發(fā)明所涉及的地理位置聚類方法,首先驗(yàn)證數(shù)據(jù)點(diǎn)集中的數(shù)據(jù)是否符合正態(tài)分布,對于符合正態(tài)分布的,先計(jì)算核函數(shù)的帶寬,再計(jì)算聚類的起始點(diǎn),接著根據(jù)起始點(diǎn)和帶寬計(jì)算得到起始點(diǎn)需要移動(dòng)到的最終點(diǎn),并將該過程中訪問過的數(shù)據(jù)均標(biāo)記,并歸類為一個(gè)簇,然后判斷標(biāo)記的數(shù)據(jù)是包含了數(shù)據(jù)點(diǎn)集中的所有數(shù)據(jù),如果有沒有被訪問到的點(diǎn),則將標(biāo)記過的點(diǎn)剔除后再重新計(jì)算新的起始點(diǎn),重復(fù)第一次計(jì)算起始點(diǎn)移動(dòng)的步驟,并得到另一個(gè)簇,將所有得到的簇兩兩進(jìn)行組合,比較每個(gè)組合中的兩個(gè)簇的終點(diǎn)之間的距離與距離閾值的大小,合并小于距離閾值的兩個(gè)簇,大于距離閾值的兩個(gè)簇則分別為單獨(dú)的簇,因此采用本發(fā)明的地理位置聚類方法能夠排除提取不正確或其它原因?qū)е碌漠惓|c(diǎn),從而生產(chǎn)正確、無噪音的地理位置數(shù)據(jù),并且本發(fā)明還可以消除由于地理位置生產(chǎn)者使用不同坐標(biāo)系而產(chǎn)生的位置漂移。
附圖說明
圖1是本發(fā)明中地理位置聚類方法的流程圖。
具體實(shí)施方式
為了使本發(fā)明實(shí)現(xiàn)的技術(shù)手段、創(chuàng)作特征、達(dá)成目的與功效易于明白了解,以下實(shí)施例結(jié)合附圖對本發(fā)明地理位置聚類方法作具體闡述。
如圖1所示,在本實(shí)施例中,地理位置聚類方法包含以下步驟:
步驟s1,判斷數(shù)據(jù)點(diǎn)集是否符合正態(tài)分布,如果符合則進(jìn)入步驟2,如果不符合則結(jié)束。
根據(jù)數(shù)據(jù)點(diǎn)集分布的偏度和峰度來判斷數(shù)據(jù)點(diǎn)集是否符合正態(tài)分布,偏度和峰度的計(jì)算方法如下:
s表示偏度;c表示峰度;xi表示數(shù)據(jù)點(diǎn)集中的一個(gè)數(shù)據(jù);
在本實(shí)施例中,如果數(shù)據(jù)點(diǎn)集不符合正態(tài)分布,在結(jié)束前,先對數(shù)據(jù)點(diǎn)集進(jìn)行調(diào)整,如果調(diào)整后符合正態(tài)分布的則進(jìn)入步驟2,如果不能調(diào)整成正態(tài)分布的則說明該數(shù)據(jù)點(diǎn)集不適用本發(fā)明的地理位置聚類方法。
步驟s2,根據(jù)所述數(shù)據(jù)點(diǎn)集的正態(tài)分布基于預(yù)定規(guī)則得出所述數(shù)據(jù)點(diǎn)集的核函數(shù)的帶寬。
核函數(shù)的帶寬的計(jì)算方法如下:
h為核函數(shù)的帶寬;
步驟s3,根據(jù)數(shù)據(jù)點(diǎn)集基于預(yù)定規(guī)則確定起始點(diǎn)。
在開始對數(shù)據(jù)點(diǎn)集中的數(shù)據(jù)進(jìn)行聚類之前,首先要選擇對數(shù)據(jù)進(jìn)行聚類的起點(diǎn)。由于我們計(jì)算的數(shù)據(jù)是地理位置數(shù)據(jù),因此其本身就有一定的聚集性,尤其是當(dāng)輸入的數(shù)據(jù)源是一個(gè)城市的時(shí)候,那么根據(jù)我們輸入的數(shù)據(jù)點(diǎn)集,根據(jù)以下中心點(diǎn)計(jì)算公式,起始點(diǎn)采用中心點(diǎn)計(jì)算公式得到,中心點(diǎn)計(jì)算公式如下:
將上述公式中x、y、z的表達(dá)式帶入centralat和centralon的表
達(dá)式中后,centralat和centralon的計(jì)算公式分別如下:
n為確定起始點(diǎn)時(shí)選用的數(shù)據(jù)點(diǎn)集中的數(shù)據(jù)個(gè)數(shù);centralon為中心點(diǎn)的經(jīng)度;centralat為中心點(diǎn)的緯度;x、y、z為計(jì)算過程中間量。
步驟s4,根據(jù)起始點(diǎn)、帶寬基于預(yù)定規(guī)則得到起始點(diǎn)移動(dòng)到的終點(diǎn),標(biāo)記從起始點(diǎn)移動(dòng)到終點(diǎn)時(shí)訪問過的數(shù)據(jù)點(diǎn)集中的數(shù)據(jù),并將標(biāo)記的數(shù)據(jù)歸為一個(gè)簇。
從所述起始點(diǎn)移動(dòng)到所述終點(diǎn)的方法如下:
步驟4-1,以步驟3中確定的起始點(diǎn)為中心點(diǎn),查找數(shù)據(jù)點(diǎn)集中所有到中心點(diǎn)的距離小于帶寬的數(shù)據(jù),并進(jìn)行標(biāo)記,為了下文描述,將這些數(shù)據(jù)記作記作集合m1,將集合m1中的數(shù)據(jù)歸類于簇c,并將集合m1中的數(shù)據(jù)屬于簇c的概率加1。然后,計(jì)算中心點(diǎn)到集合m1中每個(gè)數(shù)據(jù)的漂移向量。漂移向量即中心點(diǎn)到標(biāo)記數(shù)據(jù)形成的向量。
漂移向量采用以下方法得到:
步驟4-2,將步驟4-1中得到的所有漂移向量相加得到中心點(diǎn)的偏移向量,將中心點(diǎn)沿偏移向量移動(dòng),移動(dòng)的距離為偏移向量的絕對值,移動(dòng)后到達(dá)的點(diǎn)作為中間點(diǎn)。
步驟4-3,判斷偏移向量與設(shè)定閾值的大小,如果大于設(shè)定閾值,則返回步驟4-1,并以步驟4-2中得到的中間點(diǎn)為中心點(diǎn)開始迭代計(jì)算,重復(fù)步驟4-1、步驟4-2、步驟4-3。具體為:返回步驟4-1并以步驟4-2中得到的中間點(diǎn)為中心點(diǎn),查找數(shù)據(jù)點(diǎn)集中數(shù)據(jù)到該中心點(diǎn)的距離小于帶寬的所有的數(shù)據(jù),并進(jìn)行標(biāo)記,將這些數(shù)據(jù)記作記作集合m2,將集合m2中的數(shù)據(jù)也歸類于簇c,并將集合m2中的數(shù)據(jù)屬于簇c的概率加1,其中,集合m2中的數(shù)據(jù)與集合m1中的數(shù)據(jù)有部分是重復(fù)的。然后,計(jì)算起始點(diǎn)到集合m2中每個(gè)數(shù)據(jù)的漂移向量。如果小于設(shè)定閾值,則記錄下該中間點(diǎn)作為終點(diǎn)。并且將在該迭代過程中被標(biāo)記過的點(diǎn)歸類為一個(gè)簇。
如果步驟4-3的判定結(jié)果一直為偏移向量大于設(shè)定閾值,則一直重復(fù)重復(fù)步驟4-1、步驟4-2、步驟4-3的步驟,每執(zhí)行一次步驟4-1,被標(biāo)記的數(shù)據(jù)屬于該簇的概率加1。即:每重復(fù)一次,則產(chǎn)生一個(gè)集合mi,不同集合mi中包含有相同的數(shù)據(jù),也包含有不同的數(shù)據(jù),即,一個(gè)數(shù)據(jù)可能屬于多個(gè)集合mi,而這個(gè)過程中產(chǎn)生的所有集合mi中的全部數(shù)據(jù)均歸類為簇c,一個(gè)數(shù)據(jù)屬于幾個(gè)集合mi,則其屬于簇c的概率就為幾。
步驟s5,判斷數(shù)據(jù)點(diǎn)集中的所有數(shù)據(jù)是否均被標(biāo)記過,如果數(shù)據(jù)點(diǎn)集中的所有數(shù)據(jù)均被標(biāo)記過則進(jìn)入步驟7,如果數(shù)據(jù)點(diǎn)集中有未被標(biāo)記的數(shù)據(jù),則進(jìn)入步驟6。
步驟s6,將數(shù)據(jù)點(diǎn)集中被標(biāo)記過的數(shù)據(jù)剔除,將未被標(biāo)記的數(shù)據(jù)作為新的數(shù)據(jù)點(diǎn)集計(jì)算得到新的起始點(diǎn),然后返回步驟4。其中,剔除的數(shù)據(jù)僅在計(jì)算新的起始點(diǎn)時(shí)被剔除,在返回步驟4時(shí)的計(jì)算過程中聚類的仍然是步驟1中需要進(jìn)行聚類的數(shù)據(jù)點(diǎn)集。
步驟s7,將得到的所有簇兩兩進(jìn)行組合,判斷每個(gè)組合中的兩個(gè)簇的終點(diǎn)之間的距離與距離閾值的大小,如果兩個(gè)簇的終點(diǎn)之間的距離小于距離閾值,則將該兩個(gè)簇合并,如果兩個(gè)簇的終點(diǎn)之間的距離大于距離閾值,則將兩個(gè)簇分別作為單獨(dú)的簇。在本實(shí)施例中,距離閾值為50米。由于每個(gè)數(shù)據(jù)歸類時(shí)可能不只屬于一個(gè)簇,在此,將屬于多個(gè)簇的數(shù)據(jù)稱為多簇?cái)?shù)據(jù),因此,需要對多簇?cái)?shù)據(jù)進(jìn)行歸類。在聚類每個(gè)點(diǎn)時(shí),對每個(gè)數(shù)據(jù)屬于哪個(gè)簇的概率進(jìn)行了計(jì)算。在本實(shí)施例中,將多簇?cái)?shù)據(jù)屬于各個(gè)簇的概率進(jìn)行比較,并將多簇?cái)?shù)據(jù)歸類于概率大的那個(gè)簇。
在本實(shí)施例中,將本發(fā)明的本地理位置聚類方法在分布式平臺上運(yùn)行,在分布式平臺上運(yùn)行,能夠支持tb級別的數(shù)據(jù),并且對數(shù)據(jù)上限沒有要求。分布式平臺包含:mapreduce平臺、hadoop平臺、storm平臺、spark平臺等。由于本發(fā)明的地理位置聚類方法在聚類的過程中需要多次迭代才能收斂,因此,最優(yōu)的,在分布式平臺上,采用spark平臺運(yùn)行本發(fā)明的本地理位置聚類方法,才能很好的保證本發(fā)明的地理位置聚類方法運(yùn)行的性能。
上述實(shí)施方式為本發(fā)明的優(yōu)選案例,并不用來限制本發(fā)明的保護(hù)范圍。