在 R 中使用高尔距离进行聚类

Clustering using gower distance in R

我有一个包含分类变量和数字变量的数据框。我想使用 gower 距离对这些数据进行聚类,并将聚类值作为 kmeans 函数中的向量。我怎样才能做到这一点?

您可以使用 vegan 包生成您的 gower 矩阵,然后使用 cluster 包创建您的集群。

gow.mat <- vegdist(dataframe, method="gower")

然后您可以将该矩阵输入到 PAM 函数中。下面的示例将使用 gower 距离生成 5 个簇

clusters <- pam(x = gow.mat, k = 5, diss = TRUE)

然后您可以从

获取集群信息
clusters$clustering

如果您不想坚持使用 Gower 距离,可以使用 clustMixType 中的 kproto() 函数。 kproto中的距离度量类似于高尔距离,只是kproto使用欧氏距离来度量数值变量之间的相异性;然而,Gower 距离标准化每个变量(将两个观察值之间的距离除以该变量的范围)。代码很简单。

kproto_clustering <- kproto(df, k)   # k is number of cluster
clusters <- kproto_clustering$cluster