2017-10-22 109 views
2

我在Python 3中做了一个凝聚层次聚类实验,我发现scipy.cluster.hierarchy.cut_tree()没有为某些输入链接矩阵返回请求数量的聚类。因此,现在我知道cut_tree()函数中存在一个错误(如here所述)。scipy.cluster.hierarchy.cut_tree()的替代方案

但是,我需要能够得到一个平坦的群集与k不同的标签赋值给我的数据点。您是否知道使用任意输入链接矩阵Z中的k标签获得平坦聚类的算法?我的问题归结为:我怎样才能计算出什么cut_tree()从零开始计算,没有错误?

您可以用this dataset测试您的代码。

旁注:另一种方法也许可以是使用rpy2cutree()为SciPy的的cut_tree()的替代品,但我从来没有使用过。你怎么看?获得k平集群

回答

1

一种方法是使用scipy.cluster.hierarchy.fclustercriterion='maxclust'

from scipy.cluster.hierarchy import fcluster 
clust = fcluster(Z, k, criterion='maxclust') 
+0

你介意检查[这个问题](https://stackoverflow.com/questions/47535256/how-to-make -fcluster到返回的-相同的输出,如切树)?看起来'fcluster'并不总是返回指定数量的簇,但也更少。谢谢! – Cleb