2017-10-28 2 views
0

Iは10点の組を有し、クラスタリングは2つの異なるクラスタ中心起点として(8,3) & (8,-1)Rの関数kmeansは

を与え見つける必要があります。私が手動で行うと、正しいクラスターセンターが得られます(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. 2つの異なる元のクラスタ(8,3)&8、-1)の間に線を引く。 – user3757860

+0

もう一度試してみましょう。 1. 2つの異なる元のクラスタ(8,3)と(8、-1)の間に線を引く。 2. 1行目に垂直な線をその中間点(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

関連する問題