我正在尝试使用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")
我得到以下图表:
我对此很陌生,所以我可能会离开,但这张图对我来说并不合适。数据基本上划分为区域,说实话,我期待看到类似的内容:
我正在使用的数据集here。
答案 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)