使用R的K中心聚类是关联的结果?

时间:2017-11-11 17:22:55

标签: r cluster-analysis k-means

我正在尝试使用R进行k-means聚类,这是我到目前为止所做的:

tmp <- kmeans(ds, centers = 4, iter.max = 1000) 

plot(ds[tmp$cluster==1,c(1,5)], col = "red", xlim = c(min(ds[,1]),  
  max(ds[,1])), ylim = c(min(ds[,5]), max(ds[,5])))
  points(ds[tmp$cluster==2,c(1,5)], col = "blue")
  points(ds[tmp$cluster==3,c(1,5)], col = "seagreen")
  points(ds[tmp$cluster==4,c(1,5)], col = "orange")
  points(tmp$centers[,c(1,5)], col = "black")

我得到以下图表:

enter image description here

我对此很陌生,所以我可能会离开,但这张图对我来说并不合适。数据基本上划分为区域,说实话,我期待看到类似的内容:

enter image description here

  • 这张图片中的圆圈只是为了展示我期待群集的位置。任何人都可以解释为什么数据是这样的聚类?我多次进行了聚类,我总是得到这个结果。

我正在使用的数据集here

2 个答案:

答案 0 :(得分:2)

这就是k-means聚类算法的工作原理。 Google&#34; k-means集群&#34;并查看图片结果,您将看到不同的变化:圆形簇和您收到的类型。如果将群集数 k 设置为其他数字,则会得到不同的群集。该算法的目标是将数据集划分为所需数量的非重叠簇 k ,以便最小化总簇内变化。这是你在情节中看到的结果。

答案 1 :(得分:2)

请注意Age从大约18到60,所以年龄之间的最大距离约为40.现在注意收入的范围从0到20000.点之间的距离主要由收入决定。如果希望在群集中使用两个变量,则应在群集之前缩放数据。尝试

tmp<-kmeans(scale(ds), centers = 4, iter.max = 1000)