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

Я выполняю анализ кластеризации k средних для набора данных Iris в R. Я пытаюсь создать попарный график всех различных комбинаций атрибутов (Sepal.Length, Sepal.Width, Petal.Length и Petal.Width), сгруппированных с использованием 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, но мне не повезло


person daisybeats    schedule 27.09.2020    source источник
comment
k <- kmeans(iris.scaled,centers=3) Ошибка в as.matrix (x): объект iris.scaled не найден   -  person Will    schedule 27.09.2020
comment
Обновлено сейчас, извинения   -  person daisybeats    schedule 27.09.2020
comment
не беспокойтесь, я понял это, просто проще начать с тех же данных, что и вы, вместо того, чтобы гадать, какую обработку вы выполняли. ответил ниже, надеюсь, все в порядке.   -  person Will    schedule 27.09.2020


Ответы (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)

парные диаграммы от радужной оболочки глаза

person Will    schedule 27.09.2020
comment
Это прекрасно, спасибо. Есть ли способ избавиться от значений корреляции в полях и просто закрыть их? - person daisybeats; 27.09.2020
comment
верхнее и диагональное должны помочь. отредактировал сообщение, чтобы добавить информацию. - person Will; 27.09.2020