【发布时间】:2015-06-05 13:06:08
【问题描述】:
我有一个包含 6497 个实例、12 个属性和一个名为 q(质量)的类变量的数据集。类值可以从3到9。数据可以CSV格式下载from here
我正在这个数据集上做 k-means 聚类,并想绘制它。但是我生成的图似乎有问题,因为我认为它们不代表集群。我试图生成的情节来自这个 SO 答案How to create a cluster plot in R?
这就是我正在做的事情
library(vegan)
winequality <- read.csv("wine_nocolor.csv")
express <- winequality[, c("fa", "va", "ca", "rs", "ch", "fsd", "tsd", "d", "p", "s", "a")]
rownames(express) <- winequality$id
str(express) #'data.frame': 6497 obs. of 11 variables
kclus <- kmeans(express,centers= 3, iter.max=1000, nstart=10000) #takes a bit of time
wine_dist <- dist(express)
cmd <- cmdscale(wine_dist) #takes bit of time
groups <- levels(factor(kclus$cluster))
ordiplot(cmd, type = "n") #shows warning that Species scores not available
cols <- c("steelblue", "darkred", "darkgreen")
for(i in seq_along(groups)){
points(cmd[factor(kclus$cluster) == groups[i], ], col = cols[i], pch = 16)
}
# add spider and hull
ordispider(cmd, factor(kclus$cluster), label = TRUE)
ordihull(cmd, factor(kclus$cluster), lty = "dotted")
上面的代码产生了下面的情节。但正如你所看到的,这些集群并没有以清晰的方式展示。
问题
- 什么是 Dim1 和 Dim2?
- 我该如何解决这个问题?
- 此外,R 是否提供了一种方法来生成类似于 scikit 生成的用于显示簇和质心的绘图?
【问题讨论】:
-
您正在创建一个包含 11 个变量的集群,在二维图上集群看起来没有分离是正常的。顺便说一句,在应用 k-means 之前,我会先尝试减少变量的数量。你可能会有更好的结果
-
好的,感谢您的澄清。我仍然需要了解 Dim1 和 Dim2 是什么意思?以及是否可以创建类似于此scikit-learn.org/stable/_images/plot_kmeans_digits_0011.png 的绘图这里的类值可能是从 1 到 10,他们选择了 10 个集群
-
数据没有聚类——至少不使用 kmeans。 引入的集群是没有意义的。没有分离或捕获结构。
-
这些图块似乎是使用 varonoi 图生成的,它本身没有对数据进行聚类。
-
@Anony-Mousse 你是说葡萄酒数据没有聚类吗??
标签: r cluster-analysis k-means