【问题标题】:k-means: Same clusters for every executionk-means:每次执行都使用相同的集群
【发布时间】:2011-11-21 23:54:46
【问题描述】:

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

【问题讨论】:

    标签: r statistics cluster-analysis k-means


    【解决方案1】:

    是的。在进行聚类之前,使用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
    【解决方案2】:

    是的,在运行 kmeans(....) 之前立即调用 set.seed(foo) 将给出相同的随机启动,因此每次都具有相同的集群。 foo 是种子,如 42 或其他数值。

    【讨论】:

    • 只是添加到 Andrie 和 Gavin 的响应中,我已经测试过,即使我们将 kmeans() 中的 nstart 参数设置为大于 1,即具有随机播种的多次迭代,集合。 seed() 将获得可生产的相同结果。
    猜你喜欢
    • 2019-06-10
    • 2017-07-28
    • 2020-10-24
    • 2016-06-07
    • 2021-04-19
    • 1970-01-01
    • 2014-02-08
    • 2012-11-01
    • 2012-11-06
    相关资源
    最近更新 更多