我有一个非常大的文件,大约 10GB。我无法将其加载到内存中,因此我设法将其传输到 .mat 文件。但是当我尝试聚类时,仍然会出现“内存不足”问题。我认为最终的解决方案是将那些内存的东西放到磁盘上。但我需要从 matlab 调用 kmeans() 方法。有没有办法在不重写方法的情况下将 kmeans 中的局部变量也放入磁盘?
问问题
141 次
3 回答
0
当您加载数据时,它首先加载到计算机的 RAM 内存中,因此我认为解决问题的唯一最终解决方案是拥有 16GB 的 RAM。
于 2014-02-14T16:37:04.943 回答
0
您需要一种策略来处理大型数据集。可能性是:
- 使用有足够内存的系统
- 降低数据集的精度。对于集群小错误和缩放并不重要,如果可能,将属性更改为缩放的 uint8 或 uint16。(显然,删除所有不相关的数据)
- 使用更合适的算法。我不是该领域的专家,但 CLARA 和 CLARANS 是两种选择。这些算法不仅需要数据的子集,应该可以与 matfile 结合以仅将相关部分保留在内存中。
于 2014-02-14T17:12:59.800 回答
0
如果数据不是高度非线性的,您可能可以尝试对数据进行下采样。如果您有兴趣,可以阅读参考http://www.mathworks.com/help/signal/ref/downsample.html
例如,您可以获取数据,按比例 = 4 进行下采样,然后您将拥有 2.5GB 的数据。你可以走得更远,但它会增加错误。处理后,您可以使用不同的技术对数据进行上采样(Matlab 已全部内置)。不幸的是,我不知道您的数据类型,所以如果我的回答与您的问题不符,对不起。
于 2014-10-08T15:03:03.573 回答