在 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
我有一个包含分类变量和数字变量的数据框。我想使用 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