0

クラスター化したいデータ(x、y)の束があります(たとえば、60ポイント)。ただし、データの性質上、非常に小さいクラスター (1 ~ 2 ポイント) もあれば、多くのポイント (5 ~ 6 ポイント) を含むクラスターもあります。k-means アルゴを実行すると、固有のランダムな開始点により、重心値が一意ではなくなります。各クラスターの中心は、y方向に互いに少なくとも「y」離れている必要があることを知っています。(x は比較的重要ではありません) したがって、kmeans を実行した後、任意の 2 つのクラスターの中心が「y」内にある場合、基準が得られるまで kmeans アルゴを再実行したいと思います。また、収束がない場合は、クラスターの数を徐々に減らすことができます。

Rでそれを行うにはどうすればよいですか?

4

1 に答える 1

1

あなたの質問は本当に意味がありません:y変数ですか、それとも特定の次元のクラスター間の最小距離ですか?

そうは言っても、ここでそれを突き刺します。クラスターの中心は、$centersk-means フィットのコンポーネントにあります。yしたがって、中心がth 次元で少なくとも指定された距離だけ離れている近似が得られるまで、手順を繰り返すことができます。

repeat {
    m <- kmeans(df, k)
    cy <- m$centers[, 2]
    cy_diff <- diff(sort(cy))
    if(all(cy_diff > min_dist)) break
}

dfデータに応じて、、、kおよびを置き換えmin_distます。これは統計的に疑わしい IMO ですが、これは CrossValidated の問題です。

于 2013-07-06T05:53:37.480 に答える