Как получить данные основного компонента в PAM в 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")

Мой вопрос: как мне получить координаты данных ПК1 и ПК2 на основе этого графика? благодарю вас


person Carolus Mardison Purba    schedule 06.12.2019    source источник
comment
Что вы подразумеваете под получением координат данных ПК1 и ПК2?   -  person IRTFM    schedule 06.12.2019
comment
Привет, если вы посмотрите на график, вы увидите ПК1 и ПК2. Я думаю, что этот график построен с помощью данных ПК1 и ПК2, но я не знаю, как его извлечь.   -  person Carolus Mardison Purba    schedule 06.12.2019
comment
Получение ошибки о pam не найдено. Вы должны а) выяснить, в каком пакете есть pam, и добавить вызов library, и б) просмотреть страницу справки для pam и посмотреть, находятся ли данные в одном из компонентов списка x.pam.   -  person IRTFM    schedule 06.12.2019
comment
@42-, пэм из пакета cluster   -  person dc37    schedule 06.12.2019
comment
Модификации кода в вопросах должны применяться с функциями SO edit.   -  person IRTFM    schedule 06.12.2019
comment
спасибо, я думаю, пропустил одну библиотеку, да, это из Cluster Library   -  person Carolus Mardison Purba    schedule 06.12.2019


Ответы (2)


Вы можете использовать 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
person Z.Lin    schedule 06.12.2019

Весь ваш процесс ошибочен. Сначала вы используете полное связывание для оценки количества кластеров; но вместо того, чтобы использовать найденную «лучшую» кластеризацию, вы снова сгруппируете ее с помощью PAM. Вы используете евклидово расстояние, но в евклидовом пространстве k-средние обычно работают лучше, чем PAM — PAM сияет, когда у вас нет евклидовой геометрии и невозможно использовать k-средние.

И затем вы хотите использовать этот график PCA, который сильно искажен (почти вся дисперсия находится в первом компоненте, ось Y визуализирует в значительной степени случайное отклонение). Просто используйте PCA, если вам нужны эти координаты, а не реконструируйте их по графику.

person Has QUIT--Anony-Mousse    schedule 06.12.2019
comment
Вау, спасибо за совет, я просто хочу построить его с моими реальными данными. MTCARS только для примера. Но твой совет классный. Я работаю над этим .. Спасибо за это - person Carolus Mardison Purba; 06.12.2019