Clustering
如何“智能”分類排序數據的集合?
我正在嘗試智能地對已排序的集合進行分類。我有一個集合條數據。但我知道這些數據適合大小不等的垃圾箱。我不知道如何智能地選擇端點以正確擬合數據。例如:
假設我的收藏中有 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
三組,以使組內差異最小。