Python 聚类平均向量
我试图计算每个簇的平均向量。我想得到一个比O(n^2)快得多的方法。我应该改变什么以提高效率Python 聚类平均向量,python,cluster-computing,cluster-analysis,Python,Cluster Computing,Cluster Analysis,我试图计算每个簇的平均向量。我想得到一个比O(n^2)快得多的方法。我应该改变什么以提高效率 def compute_means(self,clusters,documents) noc=defaultdict(lambda:0) #number of clusters soc=defaultdict(lambda:Counter()) # sum of clusters avg=[] #used for average for c in clusters:
def compute_means(self,clusters,documents)
noc=defaultdict(lambda:0) #number of clusters
soc=defaultdict(lambda:Counter()) # sum of clusters
avg=[] #used for average
for c in clusters:
d_ID,c_ID,dist=c
soc[c_ID] += documents[d_ID]
noc[c_ID] += 1
for FFCID in sorted(soc.keys()): #Cluster ID, also reference to CID from final fantasy
total_n=float(noc[FFCID])
for k in soc[FFCID].keys(): #keys
soc[FFCID][k]=soc[FFCID][k]/total_n
avg.append(soc[FFCID])
print [item[1] for item in sorted(noc.items())]
return avg
计算一个集合的平均值通常只标为O(n.d) 即,尺寸和尺寸呈线性 如果这太慢,您需要更好地优化代码。尽可能避免使用hashmaps和lambda之类的花哨东西。其中一些操作带有隐藏(但真实)的价格标签
在使用Python和R等速度较慢的解释器语言时,尽可能使用“矢量化”操作。使用这些工具,您可以将繁重的工作委托给库中的fast C和Fortran代码,最终您将获得更少的自己的代码 可能你使用的是k-均值聚类技术。为了提高效率,你可以尝试另一种聚类算法,这是O(n)而不是O(n^2)。