Clustering

如何“智能”分類排序數據的集合?

  • August 13, 2012

我正在嘗試智能地對已排序的集合進行分類。我有一個集合條數據。但我知道這些數據適合大小不等的垃圾箱。我不知道如何智能地選擇端點以正確擬合數據。例如:

假設我的收藏中有 12 件物品,並且我知道這些數據可以放入 3 個箱子中:

Index:  1 2 3 4 5 6 7 8 9 10 11 12
Value:  1 1 1 3 3 3 3 3 3 5  5  6

我如何智能地為垃圾箱選擇斷點?

我當前的實現將數據分成大小均勻的箱,然後取端點的平均值來找到箱尾的索引。所以它是這樣工作的:

Index:  1 2 3 4 5 6 7 8 9 10 11 12
Value:  1 1 1 3 3 3 3 3 3 5  5  6

first break evenly: i = 1-4, 5-8, 9-12
mean endpoints:  between 4 and 5: (3+3)/2 = 3
                between 8 and 9: (3+3)/2 = 3

所以現在低於 3 的任何東西都適合 bin 1,高於 3 但低於 3 的任何東西都適合 bin 2,高於 3 的任何東西都適合 bin 3。你可以看到我的問題是什麼。如果數據具有不相等的箱,我的方法將失敗。

一個朋友提到了k-最近鄰算法,但我不確定。

我認為你想要做的就是所謂的聚類。您希望將您的“值”組合在一起,以便將相似的值收集在同一個 bin 中,並且預設總 bin 的數量。

您可以使用k-means 聚類算法解決此問題。在 MATLAB 中,您可以通過以下方式執行此操作:

bin_ids = kmeans(Values,3); 

上述調用會將值分為Values三組,以使組內差異最小。

引用自:https://stats.stackexchange.com/questions/34242

comments powered by Disqus