fviz_cluster () не принимает результаты k-medoid (PAM) - PullRequest
0 голосов
/ 05 ноября 2019

Попытка визуализировать результаты кластера k-medoid (PAM) с помощью fviz_cluster (), однако функция не принимает их.

Указывает в? Fviz_clust "аргумент объекта = создан объект класса" раздел "с помощью функций pam (), clara () или fanny () в кластерном пакете "

я пытался получить доступ к вектору кластеризации другими способами;

pam_gower_2$clustering
pam_gower_2[[3]]

, но затем я получаюОтдельная ошибка: «Ошибка: оператор $ недопустим для атомарных векторов»

Класс pam_gower_2 это раздел? Как и ожидал аргумент.

class(pam_gower_2)
> class(pam_gower_2)
[1] "pam"       "partition"

Вот код, который я использую:

df_gower <- df[, c(2:21)] 
df_gower <- df_gower[, c(1:4, 11:12, 14:15, 5:10, 16:20)] 

gower_dist <- daisy(df_gower, metric="gower", type=list(ordratio=c(2:4, 6), symm=c(7:8), asymm=c(5), logratio=c(13)))

gower_mat <- as.matrix(gower_dist)
tendency_gower <- get_clust_tendency(gower_mat, 100, graph=T)
tendency_gower$hopkins_stat

fviz_nbclust(gower_mat, pam, method="wss")
fviz_nbclust(gower_mat, pam, method="silhouette")

pam_gower_2 <- pam(gower_mat, k=2, diss=T)

# all of the above functions as expected

fviz_cluster(pam_gower_2, gower_mat)

над строкой выдает следующую ошибку:

"Error in array(x, c(length(x), 1L), if (!is.null(names(x))) list(names(x),
  :'data' must be of a vector type, was 'NULL'"

Очень признателенобратная связь / исправление, причины, по которым это не работает, или альтернативный способ визуализации.

Спасибо :))

1 Ответ

0 голосов
/ 05 ноября 2019

Вот документация fviz_cluster:

data: данные, которые использовались для кластеризации. Требуется только в том случае, если объект является классом kmeans или dbscan.

Поэтому вам нужно только передать результаты pam в fviz_cluster.

Вот минимальный примерfviz_cluster с pam:

library("factoextra")
library("cluster")

data("USArrests")
res <- pam(USArrests, 4)
fviz_cluster(res)

Если вы примените pam с матрицей расстояний, у вас будет ошибка. Обходной путь должен установить поле data результата впоследствии. Вот модифицированный пример с использованием матрицы расстояний (diss):

library("factoextra")
library("cluster")

data("USArrests")

diss = dist(USArrests)
res <- pam(diss, 4)

res$data = USArrests
fviz_cluster(res)
...