2017-10-28 37 views
0

我有一組的10分和需要找到給定聚類2 不同聚類中心(8,3) & (8,-1)- [R k均值具有不同聚類中心

作爲起點。如果我手動完成,我會得到正確的集羣中心(4,5) & (4,-1)

如果我使用R kmeans,我會得到右側和左側集羣的中心(10.4,2) & (-2.4,3.2)

我的R代碼裏面是:

x = c(-6,4,-3,7,1,6,-4,0,0,-1,11,7,8,3,8,-1,13,3,12,-2) 
xx = matrix(x,nrow=2) # 2 x 10 matrix 
xx 
mx = t(xx) # transpose to 10 x 2 matrix 
mx 
kcenters = matrix(c(8,8,3,-1),ncol=2) 
kcenters 
km = NULL 
km <- kmeans(mx, centers=kcenters, iter.max=1) 
km$centers 

我發現這個答案 R k-means algorithm custom centers 但似乎並沒有爲我工作的。

任何關於我在做什麼的錯誤?
謝謝

+0

你可以顯示/解釋你是如何手動做到的嗎? –

+0

1.在兩個不同的原始聚類(8,3)和8,-1之間畫一條線。 – user3757860

+0

讓我們再試一次。 1.在兩個不同的原始聚類(8,3)和(8,-1)之間畫一條線。 2.在中點(8,1)畫一條垂直於第一條線的直線。 3.找到線的一側的所有點的中心和另一側的中心。在這種情況下(-4,0),(0,-1),(8,-1),&(12,-2)低於線。其餘的都在線以上。新的中心是(4,5)和(4,-1) 4.由於所有的點都和以前一樣在線的同一側,所以你就完成了。 – user3757860

回答

0

問題是algorithm的默認值是「Hartigan-Wong」,但您可能正在使用「Lloyd」。如果您將您的kmeans語句更改爲

km <- kmeans(mx, centers=kcenters, algorithm="Lloyd") 

您將得到您期待的答案。有一個詳細的解釋算法之間的區別Data Science Forum

+0

謝謝。那樣做了! – user3757860