查看群集对象的名称

时间:2016-09-22 20:49:36

标签: r k-means dbscan

我有一些数据城市的样本,我正在为一些参数聚类。但是我无法直观地表示它们,首先使用了群集图,但是我无法理解为什么尺度会发生变化,因为即使仅使用2个分量进行绘图,数据范围从-1到1,范围从-4到4以及 - 2到2,正如您在示例1中看到的那样。

[clusplot[1]

所以我使用了hullplot DBSCAN包,但是该图不会在输出中显示城市名称,如clusplot,请参阅2。有人可以给我一个如何将这些名称添加到图表的建议吗?

hullplot

2 个答案:

答案 0 :(得分:0)

我会尝试使用ggplot2和ggrepel包。我借用代码从this question制作凸包。

set.seed(175)
library(ggplot2)
library(ggrepel) # Or first install.packages("ggrepel")

# Make the cluster
mtcars$cluster <- as.factor(kmeans(mtcars, 3)$cluster)

# Get the convex hull for the axes you want to plot
hull_df <- plyr::ddply(mtcars, "cluster", function(dta) {
    hull <- chull(dta$mpg, dta$disp)
    dta[c(hull, hull[1]), ]
})

ggplot(mtcars, aes(mpg, disp, color = cluster, fill = cluster)) + 
  geom_point() + 
  geom_polygon(data = hull_df, alpha = 0.5) + 
  geom_text_repel(aes(label = row.names(mtcars)))

结果: enter image description here

答案 1 :(得分:0)

以下是如何使用dbscan执行此操作的一些示例:

library(dbscan)
set.seed(2)
n <- 400

x <- cbind(
  x = runif(4, 0, 1) + rnorm(n, sd=0.1),
  y = runif(4, 0, 1) + rnorm(n, sd=0.1),
  z = runif(4, 0, 1) + rnorm(n, sd=0.1)
)
cl <- rep(1:4, time = 100)

### show some points (first 10) inside the hulls with text
hullplot(x, cl, main = "True clusters", pch = NA)
points(x[1:10,])
text(x[1:10,], labels = paste("Obs.", 1:10), pos = 3)

### look at dimensions x and z 
hullplot(x[, c("x", "z")], cl, main = "True clusters")

### use a PCA projection
hullplot(prcomp(x)$x, cl, main = "True clusters")

您可以查看wordcloud包以获得更好的文字布局。见here.