R kmeans данные точки

Я использую следующее для выполнения анализа kmeans:

km = kmeans(mat2, centers = 4)

Я также построил анализ Kmeans, используя library(fpc) чтобы получить визуальное представление следующим образом:

plotcluster(mat2, km$cluster)

Вот результат:

Каждый ряд mat2 соответствует точке на графике. Я дал каждой строке в матрице имя со следующим:

rownames(mat2) = names      #names is a vector corresponding to the rows of mat2

Я могу найти членство каждой строки в матрице по следующему атрибуту:

km$cluster

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

Как получить доступ к большему количеству данных из этих точек кластера? Например, я хотел бы найти соответствие между целыми числами на графике и строками в матрице. Чтобы уточнить, ответ на этот вопрос позволит мне узнать, какая строка в матрице соответствует старшей 2 на графике? Как только я узнаю, какие целые числа соответствуют каким строкам в матрице, у меня появятся имена каждой строки в матрице, и я смогу дать содержательную интерпретацию.

Я также хотел бы найти меру расстояния между точкой на графике и центром кластера, которому он принадлежит. Могу ли я получить соответствие между (x, y) координатами на графике и строками в матрице? Могу ли я получить интерактивный графический интерфейс, чтобы при нажатии на точку кластера на графике я мог видеть больше некоторых данных, описанных выше? Я открыт для использования другой библиотеки для построения графиков. Резюмируя два вопроса:

  1. Как я могу получить соответствие между целыми числами на графике и строками в матрице?
  2. Существует ли существующий пакет или инструмент, который бы облегчил мне задачу?

Вся помощь очень ценится!

1 ответ

Решение

Это ответ на некоторые ваши вопросы, но там много всего. Если вы хотите взаимодействовать со своим сюжетом для определения точек, вы можете посмотреть на ?identify, Вот ответ на работу с конкретными строками, которые вы ищете. Если вы хотите спросить об интерактивных графических интерфейсах, возможно, напишите конкретный вопрос по этому поводу.

mat <- matrix(rnorm(160), ncol=2)
km <- kmeans(mat, centers=4)
df <- as.data.frame(cbind(mat, km$cluster))
names(df) <- c("Var1", "Var2", "cluster")

#Get the row of df with highest Var1 and cluster == 2
which(df$Var1 == max(df$Var1[df$cluster==2]))
# 76

#Use this to extract the row
df[which(df$Var1 == max(df$Var1[df$cluster==2])),]

#You can subset you data based on one of the variables
#Get the rows with cluster == 2
df.2 <- df[df$cluster == 2,]
Другие вопросы по тегам