【问题标题】:kmeans clustering with limited memory内存有限的 kmeans 聚类
【发布时间】:2013-07-15 09:48:55
【问题描述】:

我正在 App Engine 上开发一个应用程序,并且正在使用来自 SciPy 的 kmeans2。

集群运行时出现这个错误:

Exceeded soft private memory limit with 159.852 MB after servicing 1 requests total

这是我正在做的,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,y,z points
  x,y,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,y,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 的内存

【问题讨论】:

标签: python google-app-engine scipy cluster-analysis k-means


【解决方案1】:

不要使用所有像素。

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

仅使用 10% 的像素应该会使您的应用程序使用更少的内存。

【讨论】:

  • 您对使用哪 10% 有什么建议吗?随机样本?每 10 个像素?
  • 真正的随机样本显然会更好,但对于您的用例而言,随机数生成可能太慢了。
【解决方案2】:

如果您无法减少操作的持续内存使用量,请you should look for this answer 寻求有关增加应用程序内内存分配或更改为其他提供商的建议。每月 20 美元,这是对机架空间服务器的简单请求,尽管根据定义,它更接近金属并且需要更多设置。

【讨论】:

    猜你喜欢
    • 2018-08-26
    • 2013-11-18
    • 1970-01-01
    • 2018-05-15
    • 2015-11-20
    • 2016-02-02
    • 2015-02-20
    • 2017-06-08
    • 2011-01-28
    相关资源
    最近更新 更多