Как создать попарный график кластеризации Kmeans в R?

#r #cluster-analysis #k-means #pairwise

#r #кластерный анализ #k-означает #попарно

Вопрос:

Я выполняю анализ кластеризации k mean в наборе данных Iris в R. Я пытаюсь создать попарный график всех различных комбинаций атрибутов (Sepal.Длина, разделитель.Ширина, лепесток.Длина и лепесток.Ширина) кластеризуется с использованием kmeans с центром 3. Я смог создать график для первой комбинации (длина чашелистика v Ширина чашелистика), который выглядит следующим образом:

 attach(iris)
iris.scaled <- scale(iris[, -5])
k <- kmeans(iris.scaled,centers=3)
plot(iris.scaled[,1],iris.scaled[,2],col=KM$cluster,)
  

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

Комментарии:

1. k <- kmeans(iris.scaled,centers=3) Ошибка в as.matrix (x): объект ‘iris.scaled’ не найден

2. Обновлено сейчас, извинения

3. не беспокойтесь, я понял это, просто проще начать с тех же данных, что и вы, вместо того, чтобы гадать, какую обработку вы выполнили. ответ ниже, надеюсь, все в порядке.

Ответ №1:

Я предлагаю:

 library(GGally)
library(data.table)
attach(iris)
iris$Species <- NULL
iris.scaled <- data.table(scale(iris))
k <- kmeans(iris.scaled, centers=3)
iris.scaled[, cluster := as.factor(k$cluster)]
colnames(iris.scaled)
# ggplot(iris.scaled, aes(x = Sepal.Length, y = Sepal.Width))  
#   geom_point(aes(color = factor(cluster)))
ggpairs(iris.scaled, aes(colour = cluster, alpha = 0.4), columns = c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width"))
  

Редактировать:
вы также можете удалить верхние графики:

 ggpairs(iris.scaled, aes(colour = cluster, alpha = 0.4), 
columns = c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width"),
upper = "blank",
diag = NULL)
  

парные графики из iris

Комментарии:

1. Это прекрасно, спасибо. Есть ли какой-нибудь способ избавиться от значений корреляции в полях и просто закрыть их?

2. upper и diag должны сделать свое дело. отредактировал сообщение, чтобы добавить информацию.