Как сформировать точки данных, используя факторную переменную для функции 'fviz_cluster' библиотеки factoextra? - PullRequest
0 голосов
/ 15 марта 2019

Я использую библиотеку factoextra в R для работы над кластеризацией K-средних.Я могу создать свой график PCA, показывающий принадлежность кластеризации точек данных, но я хочу изменить свои точки данных, используя переменную времени.Я вставил свой фиктивный код ниже, кажется, что fviz_cluster не может распознать переменную 'Time'.

Буду признателен за помощь и комментарии.

k2 <- kmeans(Scaled_data, centers = 2, nstart = 25)
k2$Time <- as.factor(time)
print(names(k2))
print(length(k2$Time))
print(length(k2$cluster))

plot_Obj <- fviz_cluster(k2, data = Scaled_data,
         stand = FALSE,
         ellipse.type = "norm",
         geom = "point",
         alpha=0.5,
         ggtheme = theme_minimal(),
         repel = FALSE,
         shape=Time)
print(plot_Obj)

Output: 
      [1] "cluster"      "centers"      "totss"        "withinss"     
      "tot.withinss"  [6] "betweenss"    "size" "iter"  "ifault"    "Time"  

  [1] 783
  [1] 783

 Error: 
    Error in fviz_cluster(k2, data = Scaled_data, stand = FALSE, 
    ellipse.type = "norm",  : object 'Time' not found
     Execution halted

1 Ответ

0 голосов
/ 19 мая 2019

С scale_shape_manual().

library(factoextra)
set.seed(123)
data("iris")

iris.scaled <- scale(iris[, -5])
km.res <- kmeans(iris.scaled, 3, nstart = 10)

km.res$cluster
shapex <- data.frame(clust = km.res$cluster) %>% 
  dplyr::mutate(shape = ifelse(clust == 1, 21,
                               ifelse(clust == 2, 22,
                                      ifelse(clust == 3, 23, "ERROR"))))

p <- fviz_cluster(km.res, iris[, -5], ellipse.type = "norm")
p

enter image description here

p + scale_shape_manual(values = 10:12)

enter image description here

Обратите внимание, что количество точек равно количеству кластеров. Доступные формы:

enter image description here

...