gpt4 book ai didi

python - 如何使用 numpy 在单次测试中找到 kmeans 的平均值

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

我有一个功能:

def update(points, closest, centroids):
return np.array([points[closest==k].mean(axis=0) for k in range(centroids.shape[0])])

它基本上是 kmeans 算法中质心步骤的更新。基本上,点是一个矩阵,最接近的是点到簇的分配..

然后我所做的就是根据集群中的点找到新的平均值..

但我想知道我是否可以摆脱那个 for 循环?也就是说我是否可以一次性找到集群平均值?

最佳答案

这是基于 np.add.reduceat 的矢量化方法-

c = np.bincount(closest,minlength=centroids.shape[0])
mask = c != 0
pts_grp = points[closest.argsort()]
cut_idx = np.append(0,c[mask].cumsum()[:-1])
out = np.full((centroids.shape[0],points.shape[1]),np.nan)
out[mask] = np.add.reduceat(pts_grp,cut_idx,axis=0)/c[mask,None].astype(float)

关于python - 如何使用 numpy 在单次测试中找到 kmeans 的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40578349/

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