2

我使用 mtcars 数据使用autoplot函数创建了一个图形并得到这样的图形

在此处输入图像描述

这是我的代码:

library(cluster)
library(NbClust)
library(ggplot2)
library(ggfortify)
x <- mtcars
number.cluster <- NbClust(x, distance = "euclidean", min.nc = 1, max.nc = 5, method = "complete", index = "ch")
best.cluster <- as.numeric(number.cluster$Best.nc[1])
x.pam <- pam(x, best.cluster)
autoplot(x.pam, data = x, frame = T) + ggtitle("PAM MTCARS")

我的问题是如何根据此图获取 PC1 和 PC2 数据坐标?谢谢你

4

2 回答 2

4

您可以使用layer_data()来获取用于 ggplot 对象的数据:

p <- autoplot(x.pam, data = x, frame = T) + ggtitle("PAM MTCARS")
layer_data(p, 1L) # coordinates of all points
layer_data(p, 2L) # coordinates of points that contribute to polygons
于 2019-12-06T06:18:28.070 回答
2

你的整个过程是有缺陷的。首先,您使用完整的链接来估计集群的数量;但不是使用发现的“最佳”聚类,而是使用 PAM 再次聚类。您使用欧几里得距离,但在欧几里得空间中,k-means 通常比 PAM 工作得更好——当您没有欧几里得几何并且不能使用 k-means 时,PAM 会发光。

然后你想使用这个严重失真的 PCA 图(几乎整个方差都在第一个分量中,y 轴显示了非常多的随机偏差)。如果您想要这些坐标,只需使用 PCA,而不是从图中重建它。

于 2019-12-06T09:15:53.557 回答