使用k-means在R中可视化大尺寸聚类

时间:2016-08-09 12:31:15

标签: r cluster-analysis data-visualization k-means

我有一个包含多行和5维(全数字)的数据集。归一化后,我应用k-means算法以聚类数据。

clus2_k3<-kmeans(clus2,centers=3)

在此步骤之后,我想要显示结果,但由于它有超过3个维度,因此无法使用2D或3D绘图。

是否有任何命令或算法可以绘制它,或者如果没有,是一种减少尺寸数量而不会丢失减去信息的替代方法吗?

3 个答案:

答案 0 :(得分:1)

成对情节是相当标准的,例如

Iris data scatter plot

这是4维数据。同样的方法也适用于5个维度。

有关详细信息,请参阅R手册中的R命令pairs

答案 1 :(得分:1)

好的,作为评论完全不可读......

require(ggplot2)
data("iris")

pca_res <- prcomp(as.matrix(iris[, 1:4]), center = TRUE, scale. = TRUE)
plot_data <- cbind(as.data.frame(pca_res$x[, 1:2]), labels = iris[, 5])

ggplot(plot_data, aes(x = PC1, y = PC2, colour = labels)) +
  geom_point()

enter image description here

修改:您可以尝试使用centerscale.参数的不同组合,例如设置为FALSE

时,此设置看起来会更好一些

enter image description here

编辑:

要查看评论中提到的“信息丢失”,可以使用summary()功能:

summary(pca_res)

# Importance of components:
#                           PC1    PC2     PC3     PC4
# Standard deviation     1.7084 0.9560 0.38309 0.14393
# Proportion of Variance 0.7296 0.2285 0.03669 0.00518
# Cumulative Proportion  0.7296 0.9581 0.99482 1.00000

这里PC1和PC2代表累计支柱的0.96。方差,这意味着96%的“信息”存储在这两个组成部分中。

答案 2 :(得分:0)

您只能使用绘图功能,但需要指定K-means抛出的特定列,它会将结果作为名称cluster的列表抛出。

试试这段代码:

plot(clus2_k3$cluster)