Визуализация кластера 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
функция не похожа на то, что она может использовать как матрицу различий, так и набор данных для создания изображения, поэтому игнорируется ли моя матрица различий, когда я добавляю данные к объекту?
Любые идеи будут высоко оценены!
Ваше здоровье