【发布时间】:2011-11-21 23:54:46
【问题描述】:
是否有可能为特定数据集的每次执行获得相同的 kmeans 集群。就像对于随机值一样,我们可以使用固定种子。是否可以阻止随机性进行聚类?
【问题讨论】:
标签: r statistics cluster-analysis k-means
是否有可能为特定数据集的每次执行获得相同的 kmeans 集群。就像对于随机值一样,我们可以使用固定种子。是否可以阻止随机性进行聚类?
【问题讨论】:
标签: r statistics cluster-analysis k-means
是的。在进行聚类之前,使用set.seed 设置随机值的种子。
使用kmeans中的例子:
set.seed(1)
x <- rbind(matrix(rnorm(100, sd = 0.3), ncol = 2),
matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2))
colnames(x) <- c("x", "y")
set.seed(2)
XX <- kmeans(x, 2)
set.seed(2)
YY <- kmeans(x, 2)
相等性测试:
identical(XX, YY)
[1] TRUE
【讨论】:
set.seed。这是因为在调用随机数生成函数时,输出取决于.Random.seed 的值,在执行这些函数后会发生变化。参考:r-coder.com/set-seed-r
是的,在运行 kmeans(....) 之前立即调用 set.seed(foo) 将给出相同的随机启动,因此每次都具有相同的集群。 foo 是种子,如 42 或其他数值。
【讨论】:
nstart 参数设置为大于 1,即具有随机播种的多次迭代,集合。 seed() 将获得可生产的相同结果。