如何在不使用clustplot的情况下在R中创建聚类图?
我试图掌握一些聚类(使用R)和可视化(使用HTML5 Canvas)。
基本上,我想要创建一个cluster plot,但我想获得一组2D点或坐标,而不是绘制数据,我可以将其拉入画布并做一些可能相当的事情(但我不确定该怎么做)。我想象我:
答案 0 :(得分:30)
你的意思是这样吗? 抱歉,但我对HTML5 Canvas一无所知,只有R ...但我希望它有所帮助......
首先,我使用kmeans对数据进行聚类(请注意,我没有对距离矩阵进行聚类),而不是计算距离matix并使用cmdscale绘制它。然后我添加颜色到MDS图,对应于由kmeans识别的组。还有一些不错的附加图形功能。
您可以访问cmdscale创建的对象的坐标。
### some sample data
require(vegan)
data(dune)
# kmeans
kclus <- kmeans(dune,centers= 4, iter.max=1000, nstart=10000)
# distance matrix
dune_dist <- dist(dune)
# Multidimensional scaling
cmd <- cmdscale(dune_dist)
# plot MDS, with colors by groups from kmeans
groups <- levels(factor(kclus$cluster))
ordiplot(cmd, type = "n")
cols <- c("steelblue", "darkred", "darkgreen", "pink")
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")
答案 1 :(得分:0)
您可以在此处找到一个图表来分析“clusplot”包中的群集结果“坐标图”。
它不是基于PCA。它使用函数比例使所有变量意味着在0到1的范围内,因此您可以比较哪个聚类保持每个变量的最大/最小平均值。
install.packages("devtools") ## To be able to download packages from github
library(devtools)
install_github("pablo14/clusplus")
library(clusplus)
## Create k-means model with 3 clusters
fit_mtcars=kmeans(mtcars,3)
## Call the function
plot_clus_coord(fit_mtcars, mtcars)
This post解释了如何使用它。