【问题标题】:Kmeans with an huge array具有巨大数组的 Kmeans
【发布时间】:2013-07-24 21:31:03
【问题描述】:

我试图找到一个庞大数据集的 5000 个中心点。我的输入数组是 [5000000][512] 意味着很多 512 维的向量。 C++ 对数组大小有限制,我似乎无法克服这一点。我想使用 opencv kmeans 函数。 有什么想法???

【问题讨论】:

  • 限制是内存而不是 c++ 向量
  • 您的输入数组意味着很多向量?什么?
  • 这还能编译吗?
  • 假设这是一个(8 字节)双精度数组。如果是这样,您的阵列将占用 19 GB 的内存。至少,您需要一个 64 位链(操作系统、编译器等)和相当大量的 RAM。
  • 它不会编译。矩阵中的每一行都是一个包含 512 个元素的输入向量。我不知道如何破坏数据或如何使用多个输入矩阵进行 kmeans

标签: c++ arrays opencv k-means


【解决方案1】:

同意上面的人。真正的问题是,你真的有这么大内存的笔记本电脑/台式机吗?如果答案是肯定的,您可以简单地编写 C 程序来完成这项工作。否则,您可能必须找出分布式解决方案,例如 Mahout on Hadoop。另一种选择是,如果您的要求可以接受,您可能希望以某种方式从所有数据中抽取样本,并对样本进行聚类。

【讨论】:

    【解决方案2】:

    我最终使用了小批量 kmeans,它对数据进行批量采样。另外,矩阵非常稀疏,所以添加稀疏矩阵表示就可以了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-02
      • 2016-12-22
      • 2011-03-24
      • 2015-01-10
      • 1970-01-01
      • 2013-01-27
      • 2011-11-10
      • 2013-08-05
      相关资源
      最近更新 更多