私が問題に気づくまで、scipyのkmeans2アルゴリズムで遊んでいました。次のコードを考えてみましょう:[0.05, 0.05]
と[1.05, 1.05]
:scipyのkmeans2アルゴリズムは、minit = 'matrix'を使用するときに設定される初期セントロイドの重み付けをしていますか?
x = np.array([[0.1, 0.0], [0.0, 0.1], [1.1, 1.0], [1.0, 1.1]])
c = np.array([[3,3], [4, 4]])
kmeans2(x, c, minit = 'matrix', iter=100)
は、あなただけの、次の重心との解に収束するには、このコードを(むしろdeviously)期待します。 はしかし、コードはこれを返します。
(array([[ 0.55, 0.55],
[ 4. , 4. ]]), array([0, 0, 0, 0], dtype=int32))
新しい重心を求める際のk-means法のアルゴリズムは、アカウントにその最初の重心を取るように思えます。どうしてこれなの?これを防ぐ方法を教えてください。