【问题标题】:R k-means algorithm custom centersR k-means 算法自定义中心
【发布时间】:2015-06-18 19:09:14
【问题描述】:

我有一个在 R 中导入的 2D 数据集 - (x,y) 坐标。我想在这个数据集上执行 k-means 聚类,但我想将具体坐标设置为初始中心。例如,我想从 5 个中心开始,它们的值为 (5, 10), (3, 8), (46, 22), (87, 66), (39, 41)

我在 kmeans 函数中看到了一个中心参数,但我不明白如何将我的值设置为中心。

kmeans(data, centers = ...) # what to set here?

【问题讨论】:

  • 可能类似于kmeans( data, centers=matrix(c(5, 10, 3, 8, 46, 22, 87, 66, 39, 41), ncol=2, byrow=TRUE))
  • 感谢您提出这个问题。事实上,在 R 文档中,它的解释非常糟糕。

标签: r k-means


【解决方案1】:

centers 参数采用整数 k,在这种情况下,k 来自 data 的随机点被选为初始中心,或者采用初始中心矩阵,其列数与 data 一样多。试试这个:

x <- rbind(matrix(rnorm(100, sd = 0.3), ncol = 2),
                 matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2))
kmeans(x,centers=3)
kmeans(x,centers=x[1:3,])

【讨论】:

    【解决方案2】:

    只需传递matrix,这是一个简单的示例:

    data = matrix(c(1.1,1,0.97,0.99,0.95,0.8,0.91,2.1,2,2.4,4.1,4.4,4.5,3.9,1.5,1.2,1.7,2.6,2.7,2.44), ncol=2)
    

    现在我们提两个起点C1 (x1=1,y1=3)C2 (x2=2,y2=4)(即使明显有3组):

    km = kmeans(data, centers=matrix(c(1,2,3,4),ncol=2))
    

    应用算法后的一些绘图: df = transform(as.data.frame(data), group=as.character(km$cluster)) 库(ggplot2)

    ggplot(df, aes(V1, V2, color=group)) + geom_point()
    

    【讨论】:

      猜你喜欢
      • 2017-04-20
      • 2015-10-12
      • 2013-07-03
      • 2010-12-05
      • 2013-04-22
      • 2020-07-28
      • 2018-10-23
      • 2022-01-01
      • 2018-10-11
      相关资源
      最近更新 更多