2017-05-29 16 views
0

rでkmodesクラスタリングを使用しています。私は、異なるクラスタでもシードkmodesクラスタのサイズは、実行ごとにかなり変化します

set.seed(11) 
c1 = kmodes(data, 3, iter.max = 1000, weighted = FALSE) 

を設定した後、私は..私はkmodesを使用しています理解しても、再び同じコードをruningて後に変更していない出力を探していますサイズを取得以下のコードを実行するたびに最初のランダムな点のための関数kmeansとして静かな同じ技術我々はシードを設定している場合...その後、関数kmeansはなく、Kmodesに同じクラスタサイズの出力を与える。..

おかげで私たちがどうかを調査することができ、この単純なコードを使用して

ラーフル

答えて

-1

与えられた結果

library(klaR) 
set.seed(1) 
x <- rbind(matrix(rbinom(250, 2, 0.25), ncol = 5), 
      matrix(rbinom(250, 2, 0.75), ncol = 5)) 
colnames(x) <- c("a", "b", "c", "d", "e") 

nreps <- 10 
mtx <- matrix(0, nrow(x), nreps) 
for (k in 1:nreps) { 
    set.seed(123) 
    mtx[, k] <- kmodes(x, 3, iter.max = 1000, weighted = FALSE)$cluster 
} 

kmodesの出力は「例による証明」はそれをしない...良いアイデアだったことはありませんnreps実行

apply(mtx,2,function(x) all(x==mtx[,1])) 

[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 
+0

では変更されません。kmodesset.seedを用いて再現することができます。たぶんデータセットが簡単すぎるので、常に同じ最小値を見つけるでしょうか? –

+0

@ Anony-Mousseこの例を掲載する前に、私は慎重に 'kmodes'内のコードをチェックし、結果の再現性がない理由は見つけられませんでした。アルゴリズム内のランダム性の唯一の要素は、 'samples'コマンドであると思われます:' modes < - unique(data)[sample(nrow(unique)(data))[1:k] '。これが私がこの例を投稿した理由です。 –

+0

ありがとう、これは大きな助けとなりました...問題は私のRの推測でした。シードを設定した後、別の反復で異なる出力が得られますが、他のシステムでは同じコードが同じになりません。なぜ出力クラスタ...のないアイデア... – user3454746

関連する問題