【问题标题】:Clustering using gower distance in R在 R 中使用 gower 距离进行聚类
【发布时间】:2015-09-22 03:01:21
【问题描述】:

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

【问题讨论】:

  • 使用适用于任意距离的 PAM、CLARA 等。

标签: r cluster-analysis categorical-data mixed-type


【解决方案1】:

如果您不想坚持使用高尔距离,可以使用clustMixType 中的kproto() 函数。 kproto 中的距离度量类似于 Gower 距离,只是 kproto 使用欧几里得距离来度量数值变量之间的相异性;但是,高尔距离对每个变量进行了归一化(将两个观测值之间的距离除以该变量的范围)。代码很简单。

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

【讨论】:

    【解决方案2】:

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

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

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

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

    然后您可以从

    获取您的集群信息
    clusters$clustering
    

    【讨论】:

    • k-means 第一个参数应该是原始输入数据,不是距离矩阵。
    • @Anony-Mousse,你说得对。我现在已经编辑了我的答案。
    猜你喜欢
    • 2014-02-15
    • 2021-06-01
    • 2019-02-22
    • 2017-12-31
    • 2011-04-13
    • 2014-07-09
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多