Kmodes群集大小每次运行都会发生相当大的变化

时间:2017-05-29 09:18:54

标签: r cluster-analysis

我在r中使用kmodes群集。每次运行下面的代码,即使在设置种子

后,我也会得到不同的簇大小
set.seed(11) 
c1 = kmodes(data, 3, iter.max = 1000, weighted = FALSE)

我正在寻找即使在再次运行相同的代码之后也不会改变的输出。我理解kmodes使用与Kmeans相同的安静技术作为初始随机点..如果我们设置种子然后Kmeans给出相同的簇大小输出但不适合Kmodes ..

由于

的Rahul

1 个答案:

答案 0 :(得分:-1)

使用此简单代码,我们可以调查是否可以使用kmodes复制set.seed给出的结果:

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