當(dāng)我們想要利用智能手機(jī)或智能手環(huán)等個(gè)人設(shè)備生成的GPS數(shù)據(jù)時(shí),,G PS軌跡聚類是一種常見的分析,。 在本文中,我們將介紹一種在Python中執(zhí)行GPS軌跡聚類的快速簡便方法。這里的主要目標(biāo)是創(chuàng)建包含“相似”軌跡的聚類,。例如,我們希望將每天從工作到家的路徑放在同一個(gè)聚類中,。 本文分為兩個(gè)主要部分,。首先,我們將描述聚類算法,。在第二部分中,,我們將展示如何在Python中使用和自定義算法。 神經(jīng)圖像算法與GPS軌跡聚類在本文中,,我們使用了一種用于neuromaging的聚類算法,,而不是像K-Means或DBSCAN那樣使用經(jīng)典的聚類算法。 QuickBundles (QB)是一種簡單的聚類算法,,用于磁共振成像中對應(yīng)用tractography算法得到的白質(zhì)纖維進(jìn)行聚類,。 只需查看下圖,我們就可以看到大腦中的白質(zhì)纖維看起來像GPS軌跡,。 應(yīng)用tractography算法獲得的白質(zhì)纖維的實(shí)例 主要思想是將每個(gè)GPS軌跡視為白質(zhì)纖維,,然后在同一個(gè)聚類中合并“相似”軌跡。在本文的其余部分,,我們將假設(shè)GPS Trajectory = White Matter Fiber,。 有了這個(gè)假設(shè),我們就可以使用原始論文中提供的算法描述:
在下圖中,,我們展示了算法如何根據(jù)給定的閾值合并公共質(zhì)心中的不同streamlines 的示例,。 QuickBundle質(zhì)心具有不同的閾值 閾值是THE要選擇的參數(shù),以優(yōu)化聚類算法的行為,。如果你想要“大”軌跡,,你可以設(shè)置閾值的高值。否則,,如果您想要小聚類,,則需要較低的值。 該論文的作者提供了所提出方法的Python實(shí)現(xiàn),。該算法作為dipy庫的一部分提供,而算法的文檔可在此處獲得(http:///dipy/examples_built/segment_quickbundles.html#),。 GPS軌跡聚類我們使用的數(shù)據(jù)集來自微軟亞洲研究院發(fā)布的GeoLife GPS Trajectories數(shù)據(jù)集,,可在此處獲得(https://www.microsoft.com/en-us/download/details.aspx?id=52367)。該數(shù)據(jù)集文檔:https://yidatao./2016-12-23/geolife-dbscan/,。 在開始執(zhí)行聚類之前,,讓我們使用gmplot繪制谷歌地圖上的所有軌跡。 數(shù)據(jù)集中的GPS軌跡 我們現(xiàn)在可以從定義兩個(gè)GPS軌跡(streamlines)之間的距離函數(shù)開始,。我們將使用GeoPy庫中定義的GPS距離,,而不是使用QuickBundle中提供的經(jīng)典歐幾里得距離。 我們計(jì)算了兩個(gè)軌跡之間的平均點(diǎn)的GPS距離,。這種計(jì)算距離的方法可以在且僅當(dāng)兩個(gè)軌跡具有相同數(shù)量的點(diǎn)時(shí)使用,,這就是為什么我們使用ResampleFeature類重新采樣所有軌跡的原因。 一旦定義了兩條軌跡之間的距離,,就可以運(yùn)行QuickBundle聚類算法,。 用于運(yùn)行軌跡聚類的代碼 然后,我們可以像以前一樣使用gmplot繪制谷歌地圖上不同聚類中包含的軌跡,。 使用gmplot聚類圖 這里是my_map.html的結(jié)果,,用于繪制不同的聚類 Cluster #0 Cluster #2 Cluster #30 結(jié)論在本文中,我們描述了一種簡單快速的方法來執(zhí)行GPS數(shù)據(jù)的軌跡聚類,。目標(biāo)是使用QuickBundles實(shí)現(xiàn)的,,QuickBundles是一種應(yīng)用于神經(jīng)成像的聚類算法。 該算法的主要限制與閾值參數(shù)的調(diào)整有關(guān)。但是,,作為數(shù)據(jù)分析中的所有內(nèi)容,,需要根據(jù)所需的群集類型選擇此參數(shù)。 |
|