2011-05-27 516 views
1

我有一個數組列表中的數字。每個元素的索引是X,值是Y.我如何去分區/集羣這些數據? 如果我有一個數組,我只想要一組標記每個分區結束的值。由於我正在研究Python,如果有庫可以做同樣的事情,請提一下。在一維數據上使用什麼聚類算法?

謝謝。

+0

什麼是數據?你的申請是什麼?你確定你想要聚類而不是分段嗎?即你是否希望羣集中的所有點都是連續的X個樣本?這是你通常爲時間系列做的事情。 – dimatura 2011-05-27 06:53:17

+0

[1D數據集中沒有隨機簇的可能重複](http://stackoverflow.com/questions/5738490/not-random-clusters-in-1d-data-set) – 2013-02-01 07:42:40

回答

5

K-Means是一個非常簡單的聚類算法,我會說在進行更復雜的事情之前先測試一下。 K-Means算法http://en.wikipedia.org/wiki/K-means_clustering

正確的K-Means初始化強烈建議http://en.wikipedia.org/wiki/K-means%2B%2B,因爲它。

如果你對K-Means不滿意,那麼你可以使用EM算法和高斯混合(http://en.wikipedia.org/wiki/Mixture_model),不要太難編碼,你可以使用K-Means來初始化它!

這些已經在Python中實現了100次,檢查任何機器學習工具箱。

+5

SciPy有一個非常友好的kmeans實現其集羣包。事實上,我今天剛剛使用它,而我恰好現在在另一個選項卡中有文檔:http://docs.scipy.org/doc/scipy/reference/cluster.vq.html – 2011-05-27 03:27:47

+2

** Don在一維數據上不使用k-means。使用優化的一維技術。** – 2013-02-01 07:41:18