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 字典應包含中心作為鍵和鄰居列表作為值
添加回答
舉報