fviz_cluster()不接受k-medoid(PAM)结果

问题描述 投票:0回答:1

[尝试使用fviz_cluster()可视化k-medoid(PAM)簇结果,但是函数不接受它们。

它在?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'"

[非常感谢您提供反馈/修复,为何不起作用或其他可视化方法。

谢谢:)

r cluster-analysis data-visualization pam
1个回答
0
投票

这里是fviz_cluster的文档:

数据:已用于集群的数据。仅当object是kmeans或dbscan类时才需要。

因此,您只需要将pam的结果传递给fviz_cluster

这里是fviz_clusterpam的最小示例:

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)
© www.soinside.com 2019 - 2024. All rights reserved.