假设我们有四个观察值,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
给出最终结果,并将观察结果分组到由集合表示的集群。谢谢。
答案 0 :(得分:5)
fcluster
有inconsistent
作为选择标准的标准参数。使用distance
作为参数,从联系矩阵Z[:,2]
中获取共生距离。如果要指定群集数,可以使用maxclust
作为标准。如果您使用单个链接进行聚类,则可能某些聚类是单例(异常值)。
帮助(fcluster)提供了有关如何使用该函数的必要信息,docs