Как создать участок кластера в R?
Как создать график кластера в R без использования clustplot?
Я пытаюсь справиться с некоторой кластеризацией (используя R) и визуализацией (используя HTML5 Canvas).
В принципе, я хочу создать график кластера, но вместо того, чтобы строить данные, я хочу получить набор двумерных точек или координат что я могу втянуть в холст и сделать что-то довольно красивое (но я не уверен, как это сделать). Я бы предположил, что я:
- Создайте матрицу подобия для всего набора данных (используя dist)
- Кластерная матрица подобия с использованием kmeans или что-то подобное (с использованием kmeans)
- Запланируйте результат с помощью MDS или PCA, но я не уверен, как соотносятся шаги 2 и 3 (cmdscale).
Я проверил вопросы здесь, здесь и здесь (при этом последний из них наиболее востребован).
Ответы
Ответ 1
Вы имели в виду что-то вроде этого?
Извините, но я ничего не знаю о холсте HTML5, только R... Но я надеюсь, что это поможет...
Сначала я кластер данных с использованием kmeans (обратите внимание, что я не кластеризую дистанционную матрицу), чем я вычислил расстояние matix и построил его с помощью cmdscale. Затем я добавляю цвета к графику MDS, который соответствует группам, идентифицированным с помощью kmeans. Плюс некоторые приятные дополнительные графические функции.
Вы можете получить доступ к координатам из объекта, созданного cmdscale.
### some sample data
require(vegan)
data(dune)
# kmeans
kclus <- kmeans(dune,centers= 4, iter.max=1000, nstart=10000)
# distance matrix
dune_dist <- dist(dune)
# Multidimensional scaling
cmd <- cmdscale(dune_dist)
# plot MDS, with colors by groups from kmeans
groups <- levels(factor(kclus$cluster))
ordiplot(cmd, type = "n")
cols <- c("steelblue", "darkred", "darkgreen", "pink")
for(i in seq_along(groups)){
points(cmd[factor(kclus$cluster) == groups[i], ], col = cols[i], pch = 16)
}
# add spider and hull
ordispider(cmd, factor(kclus$cluster), label = TRUE)
ordihull(cmd, factor(kclus$cluster), lty = "dotted")
![enter image description here]()
Ответ 2
Здесь вы можете найти один график для анализа результатов кластера, " график координат" в пакете "clusplot".
Он не основан на PCA. Он использует шкалу функций, чтобы все переменные находились в диапазоне от 0 до 1, поэтому вы можете сравнить, какой кластер содержит среднее значение max/min для каждой переменной.
install.packages("devtools") ## To be able to download packages from github
library(devtools)
install_github("pablo14/clusplus")
library(clusplus)
## Create k-means model with 3 clusters
fit_mtcars=kmeans(mtcars,3)
## Call the function
plot_clus_coord(fit_mtcars, mtcars)
Этот пост объясняет, как его использовать.