4
library(amap)
set.seed(5)
Kmeans(mydata, 5, iter.max=500, nstart=1, method="euclidean")

'amap' パッケージに入れて数回実行しますが、パラメーターとシード値は常に同じですが、Kmeans やその他のクラスター メソッドを実行するたびに、クラスター化の結果が異なります。

別のパッケージで別の kmeans 関数を試しましたが、それでも同じです...

実は、Weka と R を併用したいのでSimpleKMeans、RWeka パッケージでも試してみましたが、これは常に同じ値を返します。ただし、問題は、クラスタ化されたデータをSimpleKmeansのクラスタ番号とともにRWekaに保存する方法がわからないため、行き詰まっていることです...

とにかく、クラスタリングの結果を常に同じに保つにはどうすればよいですか? SimpleKmeansまたはクラスタリングの結果をRに保存するにはどうすればよいですか?

4

3 に答える 3

9

あなたは何か間違ったことをしているに違いありません。への各呼び出しの前にシードを設定する限り、次のコードを実行するたびに再現可能な結果が得られますKmeans()

library(amap)

out <- vector(mode = "list", length = 10)
for(i in seq_along(out)) {
    set.seed(1)
    out[[i]] <- Kmeans(iris[, -5], 3, iter.max=500, nstart=1, method="euclidean")
}

for(i in seq_along(out[-1])) {
    print(all.equal(out[[i]], out[[i+1]]))
}

最後の for ループ出力:

[1] TRUE
[1] TRUE
[1] TRUE
[1] TRUE
[1] TRUE
[1] TRUE
[1] TRUE
[1] TRUE
[1] TRUE

結果が毎回まったく同じであることを示します。

于 2011-04-17T21:26:50.687 に答える
4

K 平均の結果は、データ セット内のデータ ポイントの順序に影響されることに注意してください。ランダム化されたデータ ポイントを使用して適切なコードを再度実行すると、異なる結果が得られます。

于 2012-01-31T16:14:01.850 に答える
3

種をまきましたか? set.seed(1)

K-Means がセントロイドを初期化するたびに、ランダムに生成されます。これには、ランダムな値を生成するためのシードが必要です。

于 2015-07-27T09:30:50.967 に答える