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 ответ
Это ответ на некоторые ваши вопросы, но там много всего. Если вы хотите взаимодействовать со своим сюжетом для определения точек, вы можете посмотреть на ?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,]