gpt4 book ai didi

python - 替代 scipy.cluster.hierarchy.cut_tree()

转载 作者:太空宇宙 更新时间:2023-11-03 10:52:57 25 4
gpt4 key购买 nike

我在 Python 3 中进行凝聚层次聚类实验,我发现 scipy.cluster.hierarchy.cut_tree() 没有为某些输入链接矩阵返回请求的聚类数。所以,现在我知道 cut_tree() 中有一个错误功能(如 here 所述)。

但是,我需要能够通过为我的数据点分配 k 个不同的标签来获得平面聚类。您知道从任意输入链接矩阵 Z 获得带有 k 标签的平面聚类的算法吗?我的问题归结为:如何计算 cut_tree() 正在从头开始计算而没有错误?

您可以使用 this dataset 测试您的代码.

from scipy.cluster.hierarchy import linkage, is_valid_linkage
from scipy.spatial.distance import pdist

## Load dataset
X = np.load("dataset.npy")

## Hierarchical clustering
dists = pdist(X)
Z = linkage(dists, method='centroid', metric='euclidean')

print(is_valid_linkage(Z))

## Now let's say we want the flat cluster assignement with 10 clusters.
# If cut_tree() was working we would do
from scipy.cluster.hierarchy import cut_tree
cut = cut_tree(Z, 10)

旁注:另一种方法可能是使用 rpy2cutree() 作为 scipy 的 cut_tree() 的替代品,但我从未使用过它。你怎么看?

最佳答案

获得 k 平面簇的一种方法是使用 scipy.cluster.hierarchy.fclustercriterion='maxclust':

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

关于python - 替代 scipy.cluster.hierarchy.cut_tree(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46869640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com