我有一个大数据矩阵X
,我使用了Ward的层次聚类的SciPy实现,如下所示:
Z = ward(X.todense())
fig = plt.figure(figsize=(25, 10))
dn = dendrogram(Z)
我现在希望看到X[i]
所属的类。我怎么能这样做?
答案 0 :(得分:2)
从linkage
矩阵Z
,您可以获得scipy.cluster.hierarchy.fcluster
的群集。
首先,我假设你想要与dendrogram
的颜色相同的聚类。从docs我们可以看到color_threshold
如果未指定其他内容则设置为0.7*max(Z[:,2])
。这就是我们将要使用的。
例如:
from sklearn.datasets import make_classification
from scipy.cluster.hierarchy import linkage, fcluster
X, y = make_classification(n_samples=10)
Z = linkage(X, method='ward')
thresh = 0.7*max(Z[:,2])
fcluster(Z, thresh, criterion='distance')
另见How to get flat clustering corresponding to color clusters in the dendrogram created by scipy