k-means:每次执行的集群相同

发布于 2024-12-05 11:50:32 字数 71 浏览 1 评论 0原文

是否有可能为特定数据集的每次执行获得相同的 kmeans 集群。就像随机值一样,我们可以使用固定种子。是否可以停止聚类的随机性?

Is it possible to get same kmeans clusters for every execution for a particular data set. Just like for a random value we can use a fixed seed. Is it possible to stop randomness for clustering?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

£冰雨忧蓝° 2024-12-12 11:50:32

是的。在进行聚类之前,使用 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

Yes. Use set.seed to set a seed for the random value before doing the clustering.

Using the example in 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)

Test for equality:

identical(XX, YY)
[1] TRUE
萌辣 2024-12-12 11:50:32

是的,在运行 kmeans(....) 之前立即调用 set.seed(foo) 将给出相同的随机开始,因此每次都会给出相同的聚类。 foo 是一个种子,如 42 或其他一些数值。

Yes, calling set.seed(foo) immediately prior to running kmeans(....) will give the same random start and hence the same clustering each time. foo is a seed, like 42 or some other numeric value.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文