我几乎是Python新手。在聚类问题中,假设我们有k个聚类。我想从他们的中心找到集群点之间的错误总和。
这是我的距离函数,用于从参考点p求出点组(即g)的距离之和。
import numpy as np
import scipy
def distgp(g,p):
dist = sum(scipy.spatial.distance.cdist(g,p))
return dist
# Now I am going to find sum of errors of clusters.
f = 0
for i in range(k):
ix = LabelX==i
if any(ix):
f+=distgp(X[ix,:],X[ix,:].mean(axis=0)[:,None].T)
这里X是一个有近500000个观测值的数据集,LabelX是点的集群标签。有时X[ix,:]
为空,因此X[ix,:].mean(axis=0)
为空(RuntimeWarning:空切片的平均值),这就是为什么我使用“if any(ix)”来考虑非空的。
时间对我来说非常重要。代码工作,但我认为应该有一些有效的方法为函数distgp和循环找到错误的总和。感谢您就速度方面的代码改进提出意见。
谢谢, 萨姆