gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 01:00:24 27 4
gpt4 key购买 nike

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

它在 ?fviz_clust 中声明“对象参数 = 由函数 pam()clara() 创建的类“分区”的对象> 或 fanny() 在集群包中"

我已经尝试通过其他方式访问聚类向量;

pam_gower_2$clustering
pam_gower_2[[3]]

然后我得到一个单独的错误:

Error: $ operator is invalid for atomic vectors"

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'

非常感谢您的反馈/修复、为什么这不起作用的原因,或可视化的替代方法。

谢谢:)

最佳答案

这是fviz_cluster的文档:

data: the data that has been used for clustering. Required only when object is a class of kmeans or 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)

关于r - fviz_cluster() 不接受 k-medoid (PAM) 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58716614/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com