首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mlpack :内存不足错误

mlpack :内存不足错误
EN

Stack Overflow用户
提问于 2014-09-06 07:32:26
回答 1查看 867关注 0票数 1

目前,我尝试从mlpack执行k-means聚类,mlpack是一个可伸缩的机器学习库。

但是当我在命令行执行bin/kmeans时,我总是收到错误。

代码语言:javascript
复制
error: arma::memory::acquire(): out of memory

terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

输入文件的大小为7.4 GB。

你有什么建议吗?您是否知道适用于大型数据集的替代工具?

EN

回答 1

Stack Overflow用户

发布于 2014-09-11 23:56:58

这里没有一个真正简单的解决方案来获得确切的答案。问题是Armadillo (底层矩阵库)无法为您的输入数据分配足够的空间。

在大多数情况下,mlpack对RAM的使用比MATLAB或R等其他工具更保守,但听起来您的数据集足够大,以至于您的选择(不像Kerrek建议的那样获得具有更多RAM的系统)是有限的。

许多加速k-means的策略包括对输入数据集进行采样并在输入点的子集上运行k-means。因为k-means算法对给定的初始质心非常敏感,所以这种采样策略经常被用来选择初始质心。参见Bradley和Fayyad,1998:ftp://www.ece.lsu.edu/pub/aravena/ee7000FDI/Presentations/Clustering-Pallavi/Ref4_k-means.pdf

在您的情况下,只对可以加载到RAM中的数据子集运行k-means,并将这些数据作为集群质心,可能会更容易,也足够准确。如果k相当小,而数据集中的点的数量很大(也就是说,集群的数量比点的数量小得多),那么这应该是一种合理的方法,当然也是一种比使用RAM修改mlpack代码更保守或编写自己的程序使用mmap()或其他方法更简单的方法,而且比购买新的RAM更便宜。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25695312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档