如果數據集有440個對象和8個屬性(數據集取自UCI機器學習庫)。那麼我們如何計算這些數據集的質心。 (批發客戶數據) https://archive.ics.uci.edu/ml/datasets/Wholesale+customersK意味着多維數據的聚類
如果我計算每行的值的平均值,那會是質心? 以及如何在matlab中繪製結果集羣。
如果數據集有440個對象和8個屬性(數據集取自UCI機器學習庫)。那麼我們如何計算這些數據集的質心。 (批發客戶數據) https://archive.ics.uci.edu/ml/datasets/Wholesale+customersK意味着多維數據的聚類
如果我計算每行的值的平均值,那會是質心? 以及如何在matlab中繪製結果集羣。
OK,首先,在數據集中,1行對應於一個單個的示例中的數據,您有440行,這意味着數據集由440個示例組成。每列包含該特定特徵(或稱之爲特徵)的值,例如,數據集中的第1列包含功能Channel
的值,第2列包含功能Region
等的值。
現在對於K-均值聚類,你需要指定集羣的數量(以K-意味着ķ)。假設你想要K = 3個簇,那麼初始化K-Means最簡單的方法就是從你的數據集中隨機選擇3個例子(也就是3行,從440行中隨機抽取)作爲你的質心。 現在這3個例子是你的質心。
你可以把你的重心爲3個箱,你想要把每一例從數據集中到最接近(通常由歐氏距離測量;檢查功能norm
在Matlab中)垃圾桶。
第一輪將所有示例放入最近的箱子後,您可以通過計算其各個箱中所有示例的mean
來重新計算質心。您重複將所有示例放入最近的垃圾箱的過程,直到數據集中的示例不會將移動到另一個垃圾箱。
一些Matlab起點
您可以通過X = load('path/to/the/dataset', '-ascii');
加載數據在你的情況X
將是一個440x8
矩陣。
可以通過 distance = norm(example - centroid1);
, 其中兩個,example
和centroid1
具有維數計算1x8
從一個例子的質心的歐幾里得距離。
重新計算質心的工作原理如下,假設您已經完成了K-Means的1次迭代並將所有示例放入其各自的最近倉。假設Bin1
現在包含最接近centroid1
的所有示例,因此Bin1
的維度爲127x8
,這意味着440箇中的127個示例位於此容器中。要計算下一次迭代的質心位置,可以執行centroid1 = mean(Bin1);
。你會做類似的事情,你的其他箱。至於繪圖,你必須注意到你的數據集包含8個特徵,這意味着8個維度,哪個是不可視的。我建議你創建或尋找只包含2個特徵的(虛擬)數據集,因此可以通過使用Matlab的plot()
函數進行查看。
謝謝你的解釋。我不會找到比這更好的解釋。非常感謝您的耐心。否則,我開始相信,stackoverflow不適合像我這樣天真的人。 – Suvidha 2014-09-04 16:16:53
您是否嘗試使用任何可用的統計軟件包來計算K均值聚類?你試過R統計嗎? – rfolt 2014-09-03 17:30:37
我不知道這件事。我讀了它的另一個工具來執行k方法。我需要的是瞭解算法。不過謝謝你,至少我知道了一些新的東西。 – Suvidha 2014-09-04 16:38:44