如何在 R 中的 PAM 中获取主成分数据

How to get Principal Component Data in PAM in R

我使用 autoplot 函数使用 mtcars 数据创建图表,并得到这样的图表

这里是我的代码:

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 数据坐标? 谢谢

您可以使用 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

你的整个过程都是有缺陷的。首先,您使用完全链接来估计集群的数量;但不是使用 "best" 聚类,而是使用 PAM 再次聚类。 您使用欧几里德距离,但在欧几里德 space 中,k-means 通常比 PAM 更好 - 当您没有欧几里得几何并且 cannot 使用 k-means 时,PAM 会发光。

然后您想使用此 PCA 图,它 严重扭曲 (几乎整个方差都在第一个分量中,y 轴显示出相当多的随机偏差) .如果您想要这些坐标,只需使用 PCA,而不是从图中重建它。