2016-09-22 4 views
-1

У меня есть образец городов данных, и я кластеризую их для некоторых параметров. Но у меня возникли проблемы с представлением их визуально, сначала я использовал clusplot, но я не могу понять, почему весы меняются, поскольку даже построение только с двумя компонентами и данными в диапазоне от -1 до 1 имеет диапазоны от -4 до 4 и - 2 - 2, как вы можете видеть в примере 1.Просмотр названий кластеризованных объектов

[clusplot[1]

Так я использую hullplot DBSCAN пакет, но сюжет не отображается в вашем выводе название городов, а clusplot см 2. Может ли кто-нибудь дать мне предложение о том, как добавить эти имена в диаграмму?

hullplot

+0

пожалуйста, добавьте код, который создает участки – rawr

ответ

0

Я хотел бы попробовать использовать ggplot2 и ggrepel пакеты для этого. Я заимствовал код, чтобы сделать выпуклый корпус от this question.

set.seed(175) 
library(ggplot2) 
library(ggrepel) # Or first install.packages("ggrepel") 

# Make the cluster 
mtcars$cluster <- as.factor(kmeans(mtcars, 3)$cluster) 

# Get the convex hull for the axes you want to plot 
hull_df <- plyr::ddply(mtcars, "cluster", function(dta) { 
    hull <- chull(dta$mpg, dta$disp) 
    dta[c(hull, hull[1]), ] 
}) 

ggplot(mtcars, aes(mpg, disp, color = cluster, fill = cluster)) + 
    geom_point() + 
    geom_polygon(data = hull_df, alpha = 0.5) + 
    geom_text_repel(aes(label = row.names(mtcars))) 

Результат: enter image description here

+0

Спасибо, вы очень мне очень помогли! Если вы знаете какую-либо ссылку, чтобы объяснить, как работает clusplot, я был бы очень благодарен, потому что для того, что я искал, он единственный, кто может создавать кластеры с более чем двумя параметрами или использует только 2 наиболее значимых параметра, работающих что-то вроде выбора переменных? PCA?! – user2905427

0

Вот некоторые примеры, как это сделать с dbscan:

library(dbscan) 
set.seed(2) 
n <- 400 

x <- cbind(
    x = runif(4, 0, 1) + rnorm(n, sd=0.1), 
    y = runif(4, 0, 1) + rnorm(n, sd=0.1), 
    z = runif(4, 0, 1) + rnorm(n, sd=0.1) 
) 
cl <- rep(1:4, time = 100) 

### show some points (first 10) inside the hulls with text 
hullplot(x, cl, main = "True clusters", pch = NA) 
points(x[1:10,]) 
text(x[1:10,], labels = paste("Obs.", 1:10), pos = 3) 

### look at dimensions x and z 
hullplot(x[, c("x", "z")], cl, main = "True clusters") 

### use a PCA projection 
hullplot(prcomp(x)$x, cl, main = "True clusters") 

Вы можете посмотреть на пакет Wordcloud для лучшего расположения слов. См. here.