C++ - 计算 PCA 的框架( Armadillo 除外)

标签 c++ pca armadillo

我有一个包含大约 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/

相关文章:

c++ - 替换模板上的虚函数

C++ 返回负字符串

c++ - 将double转换为字符串C++?

linker - Armadillo + BLAS + LAPACK : Linking error?

c++ - 为什么 std::sort 不使用我的 operator< 实现

matlab - 在协方差矩阵中选择最大特征值和特征向量在数据分析中意味着什么?

r - 使用 R、PCA 和绘制累积方差时

python - bar() 缺少 1 个必需的位置参数 : 'left'

c++ - 从 arma::subvec 类型的右值初始化类型的非常量引用无效

c++ - 使用迭代器从双 for 循环构建 vector