R:每次运行时,群集结果都不同

que*_*ion 2 r cluster-analysis weka k-means

library(amap)
set.seed(5)
Kmeans(mydata, 5, iter.max=500, nstart=1, method="euclidean")
Run Code Online (Sandbox Code Playgroud)

在'amap'包中运行几次,但即使参数和种子值始终相同,每次运行Kmeans或其他集群方法时,聚类结果也不同.

我在不同的包中尝试了另一个kmeans功能,但仍然相同...

事实上,我想一起使用Weka和R,所以我也试过SimpleKMeans了RWeka包,这总是给出了相同的值.但是,问题是我不知道如何将集群数据与来自RWeka的SimpleKmeans的集群号一起存储,所以我被卡住了......

无论如何,如何保持聚类结果始终相同?或者如何将聚类结果存储SimpleKmeans到R中?

Rei*_*son 8

你一定做错了.每次运行以下代码时,我都会得到可重现的结果,只要我在每次调用之前设置种子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]]))
}
Run Code Online (Sandbox Code Playgroud)

最后一个for循环打印:

[1] TRUE
[1] TRUE
[1] TRUE
[1] TRUE
[1] TRUE
[1] TRUE
[1] TRUE
[1] TRUE
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

每次指示结果完全相同.


ped*_*rio 5

只是提醒一下,K 均值结果对数据集中数据点的顺序很敏感。如果您再次使用随机数据点运行正确的代码,您将得到不同的结果