2015-11-29 68 views
0

我有一個一維數據設置如下地圖1D數據集三維空間

19, 23, 35, 39, 39, 48, 48, 72, 83, 91, 151, 152, 153, 156, 158, 160, 250, 340, 490 

我想要得到的最頻繁的範圍內出這個值設置的。我想到了應用k均值聚類算法並採用大多數元素的聚類。我用k = sqrt(n/2)

輸出應該151 - 160

當搜索我看到一些文章表明,應用k均值爲一維數據集的聚類是不是一個好主意。所以我想到了地圖1d數據集到3d空間。我所做的只是假設每個數據點的y和z座標爲0。

有沒有更好的方法將這個數據集映射到三維空間? 或者是否有更好的方法來獲取1d數據集中最頻繁的範圍?

回答

1

每次添加維度都會使生活變得更加困難,因此從1維度移動到3維度不太可能讓生活更輕鬆。

我會按順序對數據進行排序,然後想想如何從右向左移動它。例如,移動指針,使它們之間有N個項目的窗口,並找到窗口左端的值與窗口右端的值之間的差異最小的位置。

如果您確實想使用k-means like clustering,您可以對排序值數組使用動態編程來獲得確切答案。從左到右,在每個點上計算,對於i = 1..k,用最低成本的方式將該點的值劃分爲i個集羣。你可以通過考慮每個m的成本,將m..N作爲一個單獨的聚類,並且看着m-1的答案來計算出將先前劃分的最佳成本值分成i-1簇。

+0

感謝您的解釋。但我沒有得到那個動人的部分。我看到我可以將Jenks分類器用於1D數據集,而不是增加維度。這與你的意思是一樣的嗎? –

+0

我不是Jenk分類器的粉絲(我更喜歡動態編程),但它是人們所期望並習慣的,因此使用它是有意義的。移動部分是因爲我不確定你在問什麼。它將回答諸如「在最小可能範圍內的十個值在哪裏?」等問題。 – mcdowella

+0

嗯。在我的例子中,範圍是151-60。 Coz是大部分數字組成的最小範圍。我無法選擇固定的窗口大小:這是問題所在。這就是爲什麼我想使用聚類。你有什麼想法如何解決這類問題? –