我有一个包含大约 200000
个数据点的大型数据集,其中每个数据点包含 132
个特征。所以基本上我的数据集是 200000 x 132
。
我已经使用 armadillo framework 完成了所有计算.但是,我尝试进行 PCA 分析,但我收到了一个内存错误,我不知道这是因为我的 RAM 内存(8 GB 的 Ram)还是框架本身的限制。
我收到以下错误:请求的大小太大
。
你能给我推荐另一个没有大小/内存限制的 PCA 计算框架吗?
或者,如果您之前使用 Armadillo 进行 PCA 计算并遇到了这个问题,您能告诉我您是如何解决的吗?
最佳答案
您可能需要启用 64 bit integers 的使用在 Armadillo 中,用于存储元素总数等。
具体来说,编辑文件
include/armadillo_bits/config.hpp
并取消注释行://#define ARMA_64BIT_WORD
。
在 3.4 版中,这应该在第 59 行附近。
或者,您可以在程序中包含 Armadillo header 之前定义 ARMA_64BIT_WORD,例如:
#define ARMA_64BIT_WORD
#include <armadillo>
#include <iostream>
...
请注意,您的 C++ 编译器必须能够处理 64 位整数。现在大多数编译器都有它。
关于C++ - 计算 PCA 的框架( Armadillo 除外),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13480410/