gpt4 book ai didi

python - 获取最接近簇质心的元素

转载 作者:太空宇宙 更新时间:2023-11-04 00:45:38 25 4
gpt4 key购买 nike

在使用 scipy.cluster.hierarchy.linkage 对距离矩阵进行聚类,并使用 scipy.cluster.hierarchy.cut_tree 将每个样本分配给一个聚类后,我想从每个簇中提取一个元素,该元素最接近该簇的质心。

  • 如果为此存在现成的功能,我将是最高兴的,但缺乏它:
  • 已经提出了一些建议here用于提取质心本身,而不是最接近质心的元素。
  • 请注意,不要将这与 scipy.cluster.hierarchy.linkage 中的 centroid 链接规则混淆。我自己已经进行了聚类,只是想访问最接近质心的元素。

最佳答案

使用 KD 树可以最有效地计算最近邻。例如:

from scipy.spatial import cKDTree

def find_k_closest(centroids, data, k=1, distance_norm=2):
"""
Arguments:
----------
centroids: (M, d) ndarray
M - number of clusters
d - number of data dimensions
data: (N, d) ndarray
N - number of data points
k: int (default 1)
nearest neighbour to get
distance_norm: int (default 2)
1: Hamming distance (x+y)
2: Euclidean distance (sqrt(x^2 + y^2))
np.inf: maximum distance in any dimension (max((x,y)))

Returns:
-------
indices: (M,) ndarray
values: (M, d) ndarray
"""

kdtree = cKDTree(data, leafsize=leafsize)
distances, indices = kdtree.query(centroids, k, p=distance_norm)
if k > 1:
indices = indices[:,-1]
values = data[indices]
return indices, values

indices, values = find_k_closest(centroids, data)

关于python - 获取最接近簇质心的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39766593/

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