关于scipy.cluster.hierarchy.fcluster的返回值和用法

时间:2013-11-15 22:20:10

标签: scipy hierarchical-clustering

假设我们有四个观察值,scipy.cluster.hierarchy.linkage的返回值是:

[[ 1.          3.          0.08        2.        ]
 [ 2.          4.          0.28813559  3.        ]
 [ 0.          5.          1.          4.        ]]

此返回值表示:首先将观察1和3合并到新的簇4,然后将观察2添加到该新簇中以形成新的簇5.最后,观察0被聚类。由于我想获得两个集群{1,3,2}和{0},我期望返回值为[2,1,1,1],这意味着元素0属于集群2,其余集合为另一个集群。簇1,使用阈值0.4。但实际上scipy.cluster.hierarchy.fcluster返回[3 1,2,1]。当然我可以编写python代码来自己分析链接返回的二维数组,但我认为如果我将阈值设置为0.4,fcluster函数可以返回我想要的。但是,我不知道如何为它提供参数,所以我想知道你是否可以提供一些示例代码来使用linkage进行分层聚类,并使用fcluster给出最终结果,并将观察结果分组到由集合表示的集群。谢谢。

1 个答案:

答案 0 :(得分:5)

fclusterinconsistent作为选择标准的标准参数。使用distance作为参数,从联系矩阵Z[:,2]中获取共生距离。如果要指定群集数,可以使用maxclust作为标准。如果您使用单个链接进行聚类,则可能某些聚类是单例(异常值)。 帮助(fcluster)提供了有关如何使用该函数的必要信息,docs

也是如此