python – 具有有限内存的kmeans聚类

python – 具有有限内存的kmeans聚类,第1张

概述我正在App Engine上开发一个应用程序,并且正在使用SciPy的kmeans2. 群集运行时,我收到此错误: 服务1个请求后,超出159.852 MB的软私有内存限制 这是我正在做的,color_data将是大约500万x,y,z点: def _cluster(color_data, k): """ Clusters colors and return top k Arg 我正在App Engine上开发一个应用程序,并且正在使用SciPy的kmeans2.

群集运行时,我收到此错误:

服务1个请求后,超出159.852 MB的软私有内存限制

这是我正在做的,color_data将是大约500万x,y,z点:

def _cluster(color_data,k):  """ Clusters colors and return top k       Arguments:      ----------        color_data          TYPE: List          DESC: The pixel rgb values to cluster        k          TYPE: int          DESC: number of clusters to find in the colors      Returns:      --------        sorted_colors          TYPE: List          DESC: A List of rgb centroIDs for each color cluster  """  # make rgbs into x,z points  x,z = [],[],[]  for color in color_data:    x.append(color[0])    y.append(color[1])    z.append(color[2])  # averaged_colors are points at center of color clusters  # labels are cluster numbers for each point  averaged_colors,labels = kmeans2(array(zip(x,z)),k,iter=10)  # get count of nodes per cluster  frequencIEs = {}  for i in range(k):    frequencIEs[i] = labels.toList().count(i)  # sort labels on frequency  sorted_labels = sorted(frequencIEs.iteritems(),key=itemgetter(1))  # sort colors on label they belong to  sorted_colors = []  for l in sorted_labels:    sorted_colors.append(tuple(averaged_colors[l[0]].toList()))  return sorted_colors

我怎么能在128MB以下的内存中做到这一点?

编辑:
在我的本地计算机上,运行我的应用程序显示我的活动监视器中使用了大约500 MB的内存

解决方法 不要使用所有像素.

如果你只使用10%或更少的像素,K-Means通常会返回几乎相同的结果.因为它计算均值,并且平均值不再有太大变化,如果添加更多信息,除非数据的分布不同.

仅使用10%的像素应该可以使您的应用程序使用更少的内存.

总结

以上是内存溢出为你收集整理的python – 具有有限内存的kmeans聚类全部内容,希望文章能够帮你解决python – 具有有限内存的kmeans聚类所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1196869.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存