簡體   English   中英

如何在python中對極坐標系數據進行分組或聚類

[英]How to group or cluster polar coordinate system data in python

我有一個 RPLidar,我的任務是檢測障礙物。 從傳感器中,我得到一組元組,其中包含信號質量、角度和距離(以毫米為單位)。

以下是示例:

[(15, 1.375, 2569.0), (15, 3.0, 2491.5), (15, 4.578125, 2528.75), (15, 6.203125, 2419.75), (15, 7.796875, 2299.75), (15, 9.40625, 2200.5), (15, 11.078125, 2104.25), (15, 12.703125, 2047.25), (15, 14.3125, 2091.75), (15, 15.84375, 2132.25), (15, 17.46875, 2183.75), (15, 19.015625, 2232.5), (15, 20.609375, 2288.75), (15, 22.15625, 2341.0), (15, 23.765625, 2411.0), (15, 25.34375, 2481.0), (15, 26.875, 2554.25), (15, 28.453125, 2641.0), (15, 30.046875, 2731.5), (15, 31.609375, 2824.0), (15, 33.1875, 2854.75), (11, 39.8125, 2178.0), (15, 41.390625, 2278.0), (15, 42.984375, 2199.5), (13, 44.546875, 2269.0), (15, 46.171875, 2265.5), (15, 47.71875, 2300.75), (15, 49.3125, 2454.25), (15, 50.890625, 2442.0), (15, 52.484375, 2415.0), (15, 54.109375, 2404.0), (15, 55.703125, 2390.0), (15, 57.28125, 2371.0), (15, 58.796875, 2357.5), (15, 60.421875, 2348.5), (15, 61.984375, 2344.0), (15, 63.5625, 2340.5), (15, 65.171875, 2332.75), (15, 66.75, 2328.25), (15, 68.34375, 2330.75), (15, 69.984375, 2324.5), (15, 71.515625, 2328.25), (15, 73.125, 2332.75), (15, 74.71875, 2335.75), (15, 76.28125, 2341.5)]

我在 matplotlib 中繪制了這些數據,這就是它們的樣子:

![在此處輸入圖片說明

如您所見,我將周圍環境信息作為點獲取,並且每個點都有質量、角度、與中心的距離。 現在我想將它們分組並需要找到每個組的長度。 我怎樣才能做到這一點? python中是否有任何可用的庫,我可以通過它進行如下聚類? 在此處輸入圖片說明

明顯的解決方案1:

將數據從極坐標投影到笛卡爾坐標。 然后,您可以使用任何基於坐標的算法(例如k均值)以及任何適用於歐幾里德距離的算法(例如HAC,DBSCAN)

明顯的解決方案2:

計算極坐標中的成對距離。 對於大數據而言,這可能比上述方法更為復雜,因此速度較慢,但​​更為明顯。 當您具有距離矩陣時,請使用任何基於距離的算法,例如HAC,DBSCAN,親和力傳播,光譜聚類。

根據您的繪圖,我將設計並使用DBSCAN。

在我看來,這就像一個K均值聚類問題。 您可以利用許多現有解決方案來實現這一目標。 這是有關如何在Panda中實現此目標的博客文章

如果容量可能很大,我會做一個項目在backside Pyspark中進行k均值聚類。 您可以在這里找到更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM