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

尝试使用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,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'"

将非常感谢反馈/修复,为何不起作用的原因或可视化的替代方法。

谢谢:)

jolon_zhang 回答:fviz_cluster()不接受k-medoid(PAM)结果

以下是fviz_cluster的文档:

  

data:已用于集群的数据。仅当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)
,

我通过在加载数据集时添加row.names=1解决了这个问题:

read.csv2("index.csv",header=T,sep=";",dec=",",row.names=1)
本文链接:https://www.f2er.com/3157567.html

大家都在问