Как получить симпатичный график результатов кластерного анализа k-средних?

77

Я использую R для K-средних кластеров. Я использую 14 переменных для запуска K-средних

  • Что такое симпатичный способ представить результаты К-средних?
  • Существуют ли какие-либо реализации?
  • Сложно ли иметь 14 переменных, чтобы представить результаты?

Я нашел нечто под названием GGcluster, которое выглядит круто, но оно все еще находится в разработке. Я также прочитал кое-что о картографировании Саммона, но не очень хорошо понял. Будет ли это хорошим вариантом?

JEquihua
источник
1
Если по какой-то причине вас беспокоят нынешние решения этой весьма практической проблемы, рассмотрите возможность добавления комментариев к существующим ответам или обновите свой пост, добавив больше контекста. Работа с 40 000 дел является важной информацией здесь.
chl
Другой пример с 11 классами и 10 переменными приведен на странице 118 « Элементы статистического обучения» ; не очень информативно.
Денис
библиотека (анимация) kmeans.ani (yourData, центров = 2)
Kartheek Palepu

Ответы:

27

Я бы использовал для этого силуэтный график, потому что маловероятно, что вы получите много полезной информации из парных графиков, когда число измерений равно 14.

library(cluster)
library(HSAUR)
data(pottery)
km    <- kmeans(pottery,3)
dissE <- daisy(pottery) 
dE2   <- dissE^2
sk2   <- silhouette(km$cl, dE2)
plot(sk2)

Такой подход весьма цитировали и хорошо известны (см здесь для объяснения).

Rousseeuw, PJ (1987) Силуэты: графическая помощь для интерпретации и проверки кластерного анализа . J. Comput. Appl. Математика , 20 , 53-65.

user603
источник
Мне это нравится. Я буду смотреть дальше в это. Спасибо.
JEquihua
@ user603: Не могли бы вы дать объяснение в своем ответе? Ссылка, которую вы дали 2,5 года назад, исчезла. Статья все еще там, но краткое введение в эту технику было бы неплохо.
Стин
Ссылка указывала на бумагу (это была неохраняемая точка доступа, которая действительно потемнела).
user603
У меня получился странный сюжет с этим silhoette (слева - кластерный сюжет, а справа - сюжет silhoette, ожидается ли это?) - i.imgur.com/ZIpPlhT.png
vipin8169
56

Вот пример, который может вам помочь:

library(cluster)
library(fpc)

data(iris)
dat <- iris[, -5] # without known classification 
# Kmeans clustre analysis
clus <- kmeans(dat, centers=3)
# Fig 01
plotcluster(dat, clus$cluster)

# More complex
clusplot(dat, clus$cluster, color=TRUE, shade=TRUE, 
         labels=2, lines=0)

# Fig 03
with(iris, pairs(dat, col=c(1:3)[clus$cluster])) 

Основываясь на последнем графике, вы можете решить, какие из ваших начальных переменных построить. Может быть, 14 переменных огромны, поэтому вы можете попробовать анализ основных компонентов (PCA) раньше, а затем использовать первые два или три компонента из PCA для выполнения кластерного анализа.

Мануэль Рамон
источник
1
Я не могу понять, как интерпретировать DC1 и DC2? Не могли бы вы указать мне правильное направление?
UD1989
1
@Upasana Datta: эти два компонента являются результатом применения основного анализа данных (PCA, функция princomp) к данным. Они представляют собой линейные комбинации входных переменных, которые составляют большую часть изменчивости наблюдений.
Ракенси
Привет, я озадачен тем, как вычисляется эллипс во втором графике? Как он определяет «эти два компонента объясняют 95,81% точечной изменчивости»?
mynameisJEFF
@mynameisJEFF Я бы предположил, что он использует скрытые / канонические переменные, значения eignvalues ​​и т. д. Вы можете проверить документацию, но, как правило, это означает, что когда вы видите биплот, помеченный как таковой. Это говорит о том, что 95,81% различий в данных объясняется двумя скрытыми переменными, на которые наносятся данные. Обновление - я просто погуглил его, и, действительно, он использует основные компоненты.
Hack-R
Зачем вам здесь «с»? Было бы проще просто выйти из pairsфункции.
Анатолий Степанюк
4

Самый простой способ, которым я знаю, это сделать следующее:

X <- data.frame(c1=c(0,1,2,4,5,4,6,7),c2=c(0,1,2,3,3,4,5,5))
km <- kmeans(X, center=2)
plot(X,col=km$cluster)
points(km$center,col=1:2,pch=8,cex=1)

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

darioSka
источник