Визуализация кластера PAM по мере несходства с использованием пакета factoextra

Этот вопрос изначально был опубликован на Cross Validated , но закрыт из-за того, что он «не по теме». С тех пор я столкнулся с той же проблемой (проблемами) и задался вопросом, как ее можно решить программно.

С использованиемfactoextraпакет из R, я хочу визуализировать некоторые кластерные анализы, используя fviz_cluster()функция; в частности, я сталкиваюсь с проблемами после выполнения PAM (т.е. cluster::pam).

ПРИМЕЧАНИЕ. Используемые данные содержат все числовые признаки без пропущенных значений и были масштабированы и центрированы до кластеризации.

В настоящее время мой процесс выглядит следующим образом:

      library(cluster)
library(factoextra)

data -> df
factoextra::get_dist(df, method = "spearman") -> dist_mtx

cluster::pam(
    x = dist_mtx, #dissimilarity matrix
    k = 4, #number of clusters
    diss = TRUE, #flag indicating use of disimiliarity matrix
    # metric = "euclidean", #ignored since dissimiliarty matrix is used
    pamonce = FALSE #default for original algo
    ) -> 
    pam_res

Метод PAM может занять некоторое время в зависимости от размера набора данных, но результат

объект класса "pam", представляющий кластеризацию. Подробности смотрите в ?pam.object

Здесь я сталкиваюсь с проблемами из-за внутреннего кода . Если я сделаю следующее:

      fviz_cluster(
    object = pam_res, 
    # data = df, 
    geom = "point"
    )

Я получаю сообщение об ошибке:

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

В документации указано, что dataАргумент требуется только при визуализации kmeans или DBSCAN. Вышеупомянутый фрагмент кода по-прежнему не работает, даже если данные включены в функцию.

В этом ответе SO был предоставлен один обходной путь, и фактические данные были добавлены к результирующему объекту «pam» (т. е. df -> pam_res$data). Хотя это работает, мне интересно, действительно ли это влияет на результирующую визуализацию? fviz_clusterфункция не похожа на то, что она может использовать как матрицу различий, так и набор данных для создания изображения, поэтому игнорируется ли моя матрица различий, когда я добавляю данные к объекту?

Любые идеи будут высоко оценены!

Ваше здоровье

0 ответов

Другие вопросы по тегам