2015-05-12 2 views
2

я использую K-medoids алгоритм pam сделать кластеризацию на основе (симметричной) матрицы расстояний, tmp ниже:Как получить координаты точек и кластерные метки из R clusplot()

if(!require("cluster")) { install.packages("cluster"); require("cluster") } 
tmp <- matrix(tmp <- matrix(c(0, 20, 20, 20, 40, 60, 60, 60, 100, 120, 120, 120, 
      20, 0, 20, 20, 60, 80, 40, 80, 120, 100, 140, 120, 
      20, 20, 0, 20, 60, 80, 80, 80, 120, 140, 140, 80, 
      20, 20, 20, 0, 60, 80, 80, 80, 120, 140, 140, 140, 
      40, 60, 60, 60, 0, 20, 20, 20, 60, 80, 80, 80, 
      60, 80, 80, 80, 20, 0, 20, 20, 40, 60, 60, 60, 
      60, 40, 80, 80, 20, 20, 0, 20, 60, 80, 80, 80, 
      60, 80, 80, 80, 20, 20, 20, 0, 60, 80, 80, 80, 
      100, 120, 120, 120, 60, 40, 60, 60, 0, 20, 20, 20, 
      120, 100, 140, 140, 80, 60, 80, 80, 20, 0, 20, 20, 
      120, 140, 140, 140, 80, 60, 80, 80, 20, 20, 0, 20, 
      120, 120, 80, 140, 80, 60, 80, 80, 20, 20, 20, 0), 
      nr=12, dimnames=list(LETTERS[1:12], LETTERS[1:12])) 
tmp_pam <- pam(as.dist(tmp, diag = TRUE, upper = TRUE) , k=3) 
tmp_pam$clusinfo # get cluster info 
tmp_pam$silinfo # get silhouette information 
clusplot(tmp_pam) 

У меня есть читать here, что clusplot использует cmdscale и princomp, что имеет смысл. Однако порядок операций не указан.

Как я могу получить координаты Component1 и Component2 вместе с их метками кластера и идентификаторами точек с вывода clusplot? Я хочу иметь доступ к ним, чтобы изменить/занести их в ggplot.

Я предполагаю, что построение так или иначе связаны с информацией силуэт, но не совсем понимаю, как мы доберемся до конечного участка ниже:

enter image description here

+2

Вы можете получить доступ к коду функции (т. Е. «Edit (cluster ::: clusplot.default)») –

+0

@ Паскаль, спасибо - я просто смотрел на код на самом деле. Это выглядит больно длинным. Возможно, мне лучше подумать о том, как его реализовать. – Rhubarb

ответ

0

Согласно документации, clusplot использует либо

  • анализа главных компонент
  • многомерное шкалирование

, чтобы проектировать ваши данные. Вероятно, зависит от того, передали ли вы данные или матрицу расстояний.

+0

Я подаю матрицу расстояния ('tmp' выше). Я думаю, что он делает это: 1 - найти медоидные центры, 2 - проект в 2-D через cmdscale и princomp, - поместить членов кластера вокруг каждого центра кластера (что я не уверен, как это сделать). Это просто позор, если он не дает доступа к координатам и другим сюжетным элементам и заставляет переизобретение колеса. – Rhubarb

Смежные вопросы