2 回答
TA贡献1810条经验 获得超4个赞
您可以使用成对距离来计算每个点与 X_emb 中每个点的质心的距离,然后使用 numpy 查找最小 20 个元素的索引,最后从 X_emb 中获取它们
from sklearn.metrics import pairwise_distances
distances = pairwise_distances(centroids, X_emb, metric='euclidean')
ind = [np.argpartition(i, 20)[:20] for i in distances]
closest = [X_emb[indexes] for indexes in ind]
最接近的形状为(质心数 x 20)
TA贡献1812条经验 获得超5个赞
您可以NearestNeighbors通过以下方式从 sklearn 获取课程:
from sklearn.neighbors import NearestNeighbors
def find_k_closest(centroids, data):
nns = {}
neighbors = NearesNieghbors(n_neighbors=20).fit(data)
for center in centroids:
nns[center] = neighbors.kneighbors(center, return_distance=false)
return nns
nns 字典应包含中心作为键和邻居列表作为值
添加回答
举报